全局变量在新的弹出窗口中是未定义的,而它们是预先定义的
Global variables are undefined in new pop up window, while they were defined beforehand
我尝试创建两个按钮,这样当我点击每个按钮时,我将得到一个弹出的小窗口,其中包含它将在加载时获得的内容。
这是代码:
index . html :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script type="text/javascript" src="script.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
</head>
<body ng-app="myApp">
<p ng-controller="ctrl">
<span ng-repeat="x in items">
<button ng-click="parentFunc(x.fieldOne,x.fieldTwo)">{{x.fieldOne}}</button>
<br><br>
</span>
</p>
<script>items();</script>
</body>
</html>
script.js :
var title, content;
function items(){
angular.module('myApp', []).controller('ctrl', function($scope) {
$scope.items = [
{fieldOne:"field1", fieldTwo:"field1 content"},
{fieldOne:"field2", fieldTwo:"field2 content"}
];
$scope.parentFunc=function(titleTmp,contentTmp){
title=titleTmp;
content=contentTmp;
var OpenWindow = window.open('popUp.html','_blank','width=500, height=400');
return false;
}
});
}
function codeAddress() {
document.getElementById("title").innerHTML=title;
document.getElementById("content").innerHTML=content;
}
popUp.html :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script type="text/javascript" src="script.js"></script>
</head>
<body onload="codeAddress();">
<h1 id="title"></h1>
<div id="content"></div>
</body>
</html>
新的弹出窗口按预期打开,但其中的h1
和div
得到undefined
。我试着调试它,我看到parentFunc
的前两行执行后,全局变量title
和content
得到我所期望的,它们不是未定义的。然而,当执行第三行并打开新窗口时,全局变量是未定义的。
为什么两个全局变量在弹出窗口中未定义?
怎么解呢?
您的方法不起作用:您正在尝试重新加载script.js
,然后,变量被重新初始化。
在URL中添加变量:
var OpenWindow = window.open('popUp.html?title='+titleTmp+'&content='+contentTmp,'_blank','width=500, height=400');
然后,在你的第二页,读这些参数:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script type="text/javascript">
function codeAddress(){
var title = GET_TITLE_FROM_PARAMETER;
var content = GET_CONTENT_FROM_PARAMETER;
document.getElementById("title").innerHTML=title;
document.getElementById("content").innerHTML=content;
}
</script>
</head>
<body onload="codeAddress();">
<h1 id="title"></h1>
<div id="content"></div>
</body>
</html>
当然,从第一页删除codeAddress
,因为它是无用的。
仅供参考,要获取参数值,请检查此答案
相关文章:
- 为什么“;未定义的“;在JavaScript中结束循环
- 要求未定义JS回调参数
- 如何检查管道中未定义的项目
- TypeError:无法读取属性'推'未定义的JavaScript
- $window.ga在AngularJS事件中未定义
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 未定义===未定义比较什么
- 王牌编辑器“定义未定义”
- 为什么“未定义”==未定义是不正确的
- jQuery 未定义 - $ 未定义
- 使用javascript从json中定义未定义的对象
- 使用Javascript定义未定义的变量
- Ajax 调用给了我一个未定义 - 未定义的错误
- Three.js对象定义未定义
- 为什么在使用 RequireJS 运行摩卡测试时看到“定义未定义”
- 错误:connect ENFILE 127.0.0.1:5984-本地(未定义:未定义)
- 不能重新定义未定义的值
- 在函数中定义未定义的全局变量
- 在使用 Jasmine 测试角度控制器时应定义未定义