2012-10-22 5 views
0

스트레칭하지 않습니다.변수의 범위는 내가 두 개의 HTML 파일을 다른 파일

log_in.js에서 개체 변수를 초기화했습니다.

log_in.js 사용자가 버튼 "public_User"를 누를 같이

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');   
}); 
}); 

, 그것은 "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 : 나는 log_in.js의 버튼 "public_User"를 누른 후 기본적으로

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); 
}); 

, USER_NAME이 값은 변경해야 "publicUser"가됩니다. 하지만 아무리 노력해도 값은 "default_value"로 남습니다.

도와주세요.

+0

@Chamster 편집 해 주셔서 감사합니다. – Stallman

답변

4

자바 스크립트 변수는 단일 웹 페이지의 수명 동안 만 지속됩니다. 또한 각 브라우저 창에는 자체 별도의 상태가 있습니다. 같은 창에서 다른 웹 페이지로 이동하면 자바 스크립트 스크립트가 처음부터 다시 초기화되고 이전 페이지의 값이 하나도 포함되지 않습니다. 다른 페이지에서 사용할 수있는 한 페이지에서 일부 상태를 저장하는

일반적인 방법은 다음과 같습니다

  1. 는 로컬 스토리지의 값 (최신 브라우저)
  2. 를 저장하는 쿠키
  3. 의 값을 저장
  4. 웹 페이지가 DOM 내가 같이 edit_story_name.html가 새 창에서 열리고 이전 창에서 모든 변수가 손실됩니다 그것을
+0

js 파일의 모든 메서드와 변수가 캡슐화되어 있으면 문제를 피할 수 있습니까? (내 생각 엔 ...) 죄송합니다. 위의 3 번 대신 다른 방법이 있습니까? 모바일 시스템에서 시스템을 개발하기 때문에 로컬 스토리지는 매우 불편합니다. 고마워. – Stallman

+0

@Stallman - 자바 스크립트 상태의 수명은 내가 설명했듯이 어떤 식 으로든 js 파일의 캡슐화에 의해 변경되지 않습니다. 아마 당신은 내가 Local Storage에서 의미하는 바를 이해하지 못했을 것입니다 (모바일에서 아주 잘 작동합니다). 브라우저에 내장 된 저장 메커니즘이며 HTML5의 일부입니다. 자세한 내용은 http://diveintohtml5.info/storage.html을 참조하십시오. – jfriend00

+0

PC에서 개발자는 항상 캐시를 사용하여 일반적인 문제 또는 다른 문제를 해결합니까? 모바일 시스템은 어떻습니까? "PhoneGap"을 통해 로컬 저장소를 사용해 본 경험이 있지만 언제나 저를 실망시킵니다. 너무 많은 버그가 수정되기를 기다립니다. 고마워. – Stallman

0

를 검색 할 수있는 서버에 값을 저장 새 창에서 다시로드됩니다.

+0

알았어, 좀 늦은 것 같은데 .. jfriend00의 대답을보십시오. –

관련 문제