变量的范围不会延伸到另一个文件

时间:2012-10-22 06:35:03

标签: javascript var

我有两个html文件: log_in.html edit_story_name.html 以及两个javascript文件 log_in.js edit_story_name。 JS

我在log_in.js中初始化了一个对象变量。

log_in.js

var User_Name= {value: "default_value"};    
var  Login_Password;

$(document).ready( function(){
$(' #public_User ').click( function(){

    $(' #log_in_account_txt ').val('publicUser');           
    $(' #log_in_psw ').val('publicUser');
    User_Name.value= "publicUser";

    alert("User_Name.value is"+ User_Name.value);
    window.open('edit_story_name.html','newwindow');        
});
});

当用户按下“public_User”按钮时,它会将对象变量的值指定为“pulicUser”。
然后将打开“edit_story_name.html”窗口。

edit_story_name.html:

<!DOCTYPE>
<html>
<head>
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript" charset="utf-8" src="jquery-1.7.2.js"></s   ript>        

<script type="text/javascript" src="log_in.js"></script> 
<script type="text/javascript" src="edit_story_name.js"></script>
<link  type="text/css" href="edit_story_name.css" rel="Stylesheet"/>
</head>
<body>
<input id="input_story_name" type="text" value="">
</body>
</html>

edit_story_name.js:

window.addEventListener( "load",function(){
alert("User_Name.value is"+ User_Name.value);

if(User_Name.value == "publicUser"){
Story_Name="_story";
}else {                 

Story_Name= User_Name.value +"_story";
}


$(' #input_story_name').val(Story_Name);
});

基本上,在我按下log_in.js中的“public_User”按钮后,User_Name的值应该变为“publicUser”。 但无论我怎么努力,价值仍然是:“default_value”。

请帮忙。

2 个答案:

答案 0 :(得分:4)

Javascript变量仅持续一个网页的生命周期。此外,每个浏览器窗口都有自己独立的状态。当您在同一窗口中转到另一个网页时,您的javascript脚本将从头再次重新初始化,并且不包含上一页中的任何值。

从一个页面保存某些状态的常用方法是:

  1. 将值存储在Cookie中
  2. 将值存储在本地存储(仅限现代浏览器)
  3. 将值存储在网页可以检索的服务器上

答案 1 :(得分:0)

在新窗口中打开edit_story_name.html,在新窗口中重新加载DOM时,旧窗口中的所有变量都将丢失。