0
我試圖創建兩個按鈕,以便當我點擊每個按鈕時,我將彈出一個小窗口,並顯示一個內容onloading。
這是代碼:全局變量在新彈出窗口中未定義,而事先定義了它們
的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
和其中獲得undefined
。我試圖調試它,並且我看到在執行前兩行parentFunc
之後,全局變量title
和content
得到我所期望的並且它們不是未定義的。但是,當第三行執行並且新窗口打開時,全局變量未定義。
爲什麼在彈出窗口中未定義兩個全局變量?
我該如何解決這個問題?
新窗口是一個新窗口。全局變量僅在全局窗口內是全局變量。如果你想在應用程序的窗口之間傳遞數據,你可以嘗試使用localStorage(假設你的彈出窗口是從同一個域加載的) –
但是全局變量在JavaScript文件中,它包含在兩個html文件中。這些變量對於這兩個html文件都不是全局的,認爲它們在相同的JS文件中? – Rodrigo
每個窗口都有自己的作用域,文件本身是不相關的。該文件中的JavaScript在'window'的上下文中執行 – charlietfl