2012-12-11 2 views
3

다음 JavaScript가 있습니다.document.write()가 실행되지 않은 이유는 무엇입니까?

<html> 
    <head> 
     <script language="JavaScript"> 
      function fdivisible() 
      { 
       document.write("<h1> Just a javascript demo</h1>"); 
       var x=document.forms["aaa"]["txt1"].value; 
       alert(x); 
      } 
     </script> 
    </head> 
    <body> 
     <form action="#" name="aaa"> 
      Enter a no. : <input type="text" name="txt1" id="txt1" /> 
      <input type="button" value="Click" onclick="fdivisible();"> 
     </form> 
    </body> 
</html> 

문제는 상기 JS 함수의 첫 번째 행이 실행되고, 나머지는 무시된다. 첫 번째 행을 주석 처리하면 나머지 코드가 실행됩니다. 아무도 내게 왜 그렇게 설명 할 수 있니?

답변

6

document.write은 문서를 처음로드하는 동안에 만 사용할 수 있습니다. 당신은 함수가 호출 될 때 H1을 삽입 할 경우 implicity 그것이 가지고있는 문서를 삭제하는 document.open를 호출

var h1 = document.createElement('h1'); 
h1.innerHTML = " Just a javascript demo"; 
document.body.appendChild(h1); 
+0

가 dystroy @ 정말 고마워요, @ WTK, @는 Zaheer 아메드 –

7

호출 document.write 때문에 함께

document.write("<h1> Just a javascript demo</h1>"); 

을 대체 할 수

다음과 같이 호출되었습니다.

문서가 대상에있는 경우이 메서드는 rs it

document.write을 호출하면 참조를 얻으려는 요소가 DOM에 더 이상 존재하지 않으며 오류가 발생합니다.

TypeError: Cannot read property 'txt1' of undefined

1

대답을 dystroy 이외에, 당신은 대체 할 수 document.write과 :

document.body.innerHTML += '<h1>Javascript demo</h1> 
0

오류 콘솔에 보면 다음과 같은의 라인을 따라 뭔가해야 모든 JS 문장의 끝에 document.write()을 사용하십시오. script 요소는 그 이후에 실행되지 않습니다.

var x=document.getElementById(txt1).value; 
alert(x); 
0

이보십시오. 넣으려면 클래스/ID를 추가 한 다음 해당 클래스/id에 텍스트를 넣어야합니다.

0

당신은 한 번만

document.write("<h1> Just a javascript demo</h1>"); 

으로 문서에 기록 할 수 있으며 전체 문서에 적용

1

페이지 로딩을 계속하기 위해 문서에 작성 후 스트림을 종료해야 document.write 호출과 함께 DOM. 일부 브라우저에서는 전역 변수가 손상 될 수도 있습니다.

대신 사용

var element = document.createElement('h1'); 
element.appendChild(document.createTextNode('text')); 
document.body.appendChild(element); 
관련 문제