2014-10-31 4 views
0

타사 앱을 사용하고 있으며 Javascript 또는 jQuery로 변경/업데이트해야하는 HTML 변수에 하드 코딩 된 JS 변수가 있으며 둘 다 사용할 수 있습니다.하드 코딩 된 JS 변수 값 변경

사용자가 드롭 다운에서 값을 선택할 때 업데이트되는
<script type="text/javascript" charset="utf-8"> 
var order_poNumber = ""; 
</script> 

(내 드롭 다운이 아닌 제 3 자) :

<script type="text/javascript" charset="utf-8"> 
var order_poNumber = "32380080-64060"; 
</script> 

제 3 자 응용 프로그램 변수는 하드 페이지에 코딩했다

하지만 문제는 값이 어떤 이유로 든 달라 붙는 것입니다. 다른 페이지로 이동하여 (뒤로 버튼을 사용하지 않고 다른 페이지로 이동하여이 문제가 발생한 주문 페이지로 돌아가려면 링크 클릭) 값은 여전히 ​​32380080-64060으로 설정됩니다. 하지만 나는 그것이 원래대로 비어 있어야합니다.

function resetPO(){ 
    order_poNumber = ""; 
} 
window.onload = resetPO(); 

그리고 몇 가지 다른 유사하지만 작동하지 않습니다

은 내가 시도했습니다.

JS를 외부 JS 파일 BTW에서 처리해야합니다.

아이디어가 있으십니까?

HTML에 하드 코딩 된 JS 스크립트 블록의 order_poNumber 변수에 저장된 값을 덮어 쓸 수있는 방법을 찾고 있습니다. 이상적으로 나는 어떤 종류의 늦은 또는 연기 된 JS가 들어 와서 페이지가로드되면 값을 덮어 쓰길 원합니다. 드롭 다운 (AJAX, ActiveX, JS, jQuery 및 제 3 자 앱과 제 코드와 함수의 혼합)에서 일단 해당 숫자가 선택되면 어떻게 작동하는지 많은 단계가 있습니다. 많은 작업이 필요합니다. 그래서 나는 더 이상 그 모든 것을 망치고 싶지 않습니다.

+1

가치가 있다고 생각하는 유일한 이유는 그것이 쿠키에 저장된다는 것입니다. 이를 확인해야 할 경우 쿠키에서 값을 지우는 스크립트를 작성해야합니다. – trnelson

+1

"어떻게 돌아오고 있습니까?" 브라우저의 _back_ 단추를 사용하고 있다면, '창.onload'가 항상 해고되는 것은 아닙니다. [이 질문에]보십시오 (http://stackoverflow.com/questions/158319/cross-browser-onload-event-and-the-back-button) –

+1

@ trnelson 무슨 말했듯이, 그 값을 수도 있습니다 캐시되고'sessionStorage'에서 리셋됩니다 (또는 적절하지 않은 경우,'localStorage'). –

답변

1

Heres는 뭔가, 그냥 볼 수 있습니다. 브라우저가 실제로 재설정 될 때까지 값을 계속 재설정하도록 요청할 것입니다. 첫 번째 값을 설정하는 스크립트 이후에 실행해야하므로 jQuery의 ready() 함수가 window.onload보다 유용합니다 (이미 다른 용도로 사용 중일 수 있음). 마지막으로 실행되거나로드되는 태그 인 </body> 태그 앞에 넣는 것을 잊지 마십시오.

window.onload = function(){ 
    var resetValueInterval = setInterval(function(){ 
     order_poNumber = ""; 
     if(order_poNumber == ""){ 
      clearInterval(resetValueInterval); 
     } 
    },100); 
} 

설정되어 있는지 확인하는 대신 값이 설정되면 확인을 중지 할 수도 있습니다. 이것은 절대 불가능할 수 있으며 더 많은 리소스를 사용할 수 있지만 언제나 시도해 볼만한 가치가 있습니다. 물론 각 반복 사이의 시간을 줄이면 더 합리적이됩니다. 문제를 해결하는 가장 우아한 방법은 아니지만 효과가있을 수 있습니다.

window.onload = function(){ 
    var resetValueInterval = setInterval(function(){ 
     order_poNumber = ""; 
    },100); 
    document.getElementById(/* order_poNumber-dropdown-id */).addEventListener("mousedown", function(){ 
     clearInterval(resetValueInterval); 
    }, false); 
} 
+0

제안 해 주셔서 감사합니다. 나는 그들을 시험해 보았지만 행운은 없었다. 여러 가지를 시도한 후에 나는 order_poNumber를 재설정/변경하면 결국 변경 될지라도 필요한 작업을 수행하지 않는다고 판단했습니다. – Brett

+0

Answer 가장 도움이 되었기 때문에 제안 된 것들 중 일부는 변수를 변경해도 예상 한 효과가 없다는 것을 알게되었습니다. – Brett

2

브라우저 뒤로 단추는 초기 페이지로드와 다르게 작동합니다. 당신은 (탐색 화살표에서 사람 포함) 페이지 변경에 리스너를 추가 JQuery와 주소를 사용할 수 있습니다 작동 할 수 있다면 내가 시도 할 것

$.address.change(function(e) { 
    resetPO(); 
}); 

http://github.com/asual/jquery-address

+0

제안 해 주셔서 감사합니다.하지만 변수를 order_poNumber 변수로 변경해도 문제가 해결되지 않는다고 생각합니다. – Brett

관련 문제