2012-05-16 3 views
2

페이지를 다른 페이지로 리디렉션하려는 Java 스크립트 기능이 있습니다. 나는 경고 기능에 의해 'Got'메시지가 표시되는지 확인했다. 따라서 함수가 제대로 호출됩니다. 그러나 window.location.href를 사용하여 페이지 리디렉션이 작동하지 않습니다. 또한 옵션의 내용 인 vDaeId, dgpId를 인쇄하는 경고 기능은 실행되지 않습니다 (브라우저에서 팝업이 표시되지 않음). 이 코드를 잘못 읽었습니까? 감사. 나는 firefox btw를 사용하고있다. 코드가 예외를 던져 실패라고 우리에게 이야기한다window.location.href가 작동하지 않습니다.

 function goToPMDisplayer(){ 
      alert('Got '); 
      var option=document.getElementById("D1").value; 
      var vDaeId=document.getElementById("D2").value; 
      var dgpId=document.getElementById("dgpids").value; 
      var str= option + " "+ vDaeId + " "+ dgpId 
      alert(str); 
      window.location.href="display.jsp?option="+option + "&vdaeid=" + vDaeId + "&dgpid=" + dgpId 

     } 
+1

누락되었습니다. ";"s? – Sebas

+1

@Sebas - 자바 스크립트에서는 문제가 없습니다. – Oded

+2

'alert (str)'이 작동하지 않으면'var'줄 중 하나에 오류가 있음을 의미합니다. 내 추측은 존재하지 않는 요소 중 하나입니다. –

답변

3

Moreover, the alert function that prints the content of option, vDaeId, dgpId does not executed (I dont see a pop up in the browser).

. 내 생각에 당신은 적어도 (D1, D2, 또는 dgpids)에 의존하는 요소 중 하나가 없어야합니다. 따라서 document.getElementByIdnull을 반환하고, .value에 액세스하려고하면 예외가 발생합니다. 문자열이 당신이 getElementById로 사용

참고 id 값이 아닌 name의해야합니다. 따라서 한 요소에는 id="D1", 다른 요소에는 id="D2", 다른 요소에는 id="dgpids"이 있어야합니다. 또한 id 값은 대소 문자를 구분할 수 있으며 이 페이지에서 고유해야 함을 유의하십시오. (대부분의 브라우저는 마지막 규칙을 망칠 경우 문서 순서대로 첫 번째 줄을 제공하지만 ...)

페이지가 완전히로드 될 때까지 goToPMDisplayer을 호출하지 않는다고 가정하지만, 페이지가로드되는 동안 호출하면 요소가 존재할 때까지 호출하지 말아야합니다 (예 : 호출을 요소보다 문서에서 더 낮게 설정).

이 같은 문제에 대한

, alert 스타일 디버깅은 몇 년 전에 나갔다. 2012 년에는 적절한 디버거를 사용합니다. 요새 모든 주요 브라우저에 IE가 내장되어 있습니다. 중단 점을 설정하고 코드를 살펴보고 DOM의 현재 상태를 검사 할 수 있습니다 ... 간단히 말해서 어둠 속에서 어수선하게 할 필요가 없습니다. 당신은 무슨 일이 일어나고 있는지 밝힐 수 있습니다.


질문에 대한 코멘트, 당신은 그냥 그 수있는 방법을 볼 수 없습니다, 외람된

I verified that all ements exist.

말했다했습니다. id 값이 약간 다르거 나 id 값이 전혀없는 것 같지만 그 값은 name입니다.

다음은 완전한 작동 예제입니다. Live copy |

<!DOCTYPE html> 
<html> 
<head> 
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
<meta charset=utf-8 /> 
<title>Test Page</title> 
<style> 
    body { 
    font-family: sans-serif; 
    } 
</style> 
</head> 
<body> 
    <input id="D1" value="valueOfD1"> 
    <input id="D2" value="valueOfD2"> 
    <input id="dgpids" value="valueOfdgpids"> 
    <br><input id="theButton" type="button" value="Click Me"> 
    <script> 
    function goToPMDisplayer(){ 
     alert('Got '); 
     var option=document.getElementById("D1").value; 
     var vDaeId=document.getElementById("D2").value; 
     var dgpId=document.getElementById("dgpids").value; 
     var str= option + " "+ vDaeId + " "+ dgpId 
     alert(str); 
     var loc = "display.jsp?option="+option + "&vdaeid=" + vDaeId + "&dgpid=" + dgpId 
     alert("loc = " + loc); 

    } 
    document.getElementById("theButton").onclick = goToPMDisplayer; 
    </script> 
</body> 
</html> 
+1

+1, '심지어 IE'. –

+0

예, 이름 태그가 있지만 ID 태그는 없습니다. 나는 id 태그를 넣었지만 문제는 여전히있다. 내가 잃어버린 다른 일이있을 수 있습니까? 답변을 주셔서 감사합니다. –

+0

@ Fardaarda : 'id'값을 추가 했는데도 문제가 계속 발생하면 코드를 게시해야합니다 (** 오직 광산과 같은 자체 포함 된 테스트 케이스에 필요한 최소 ** 위). –

5

source 당신은 첫 번째 경고 일을했다, 두 번째는이 라인 중 하나가 자바 스크립트 오류가 의미하지 않습니다 :

var option=document.getElementById("D1").value; 
var vDaeId=document.getElementById("D2").value; 
var dgpId=document.getElementById("dgpids").value; 

가장 가능성이 범인이 요소의 하나입니다 존재하지 않으며 .valuenull에 액세스하려는 경우 예외가 발생합니다.

관련 문제