為什么用alert輸出正常,全部換成document.write錯誤;只用一個document.write值也正常,兩個就錯誤呢?
<!DOCTYPE HTML>
<html> ?
<head> ?
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> ?
<title>JavaScript</title> ?
<script type="text/javascript">
?/*
?function getValue()
? ? ? ? ? {
? ? ? ? ? ? ? var myH=document.getElementById("myHead");
? ? ? ? ? ? ? alert(myH.innerHTML)
? ? ? ? ? }
? ? ? ? ? function getElements()
? ? ? ? ? {
? ? ? ? ? ? ?var myS=document.getElementsByName("sex");
? ? ? ? ? ? ? alert(myS.length);
? ? ? ? ? }
? ? ? ? ? function getTagElements()
? ? ? ? ? {
? ? ? ? ? ? ? var myI=document.getElementsByTagName("td");
? ? ? ? ? ? ? alert(myI.length);
? ? ? ? ? }
?*/
function getTagElements(){
? ? var mynodes=document.getElementsByTagName("tr");
? ??
? ? alert(mynodes.length);
?// ?document.writeln(mynodes.length);
??
? ? var tab=mynodes[0].hasChildNodes();
? ? alert(tab);
// document.writeln(tab);
? ? var lg=mynodes[0].childNodes;
? ? alert(lg.length);
?// ?document.writeln(lg.length);
? ?
} ? ??
?
? ? ?</script> ? ? ?
</head> ?
<body> ?
? ??
? ? ? ? <form name="Input">
? ? ? ? ? ? <table align="center" width="500px" height="50%" border="1">
? ? ? ? ? ? ? ? <tr>
? ? ? ? ? ? ? ? ? ? <td align="center" width="100px">
? ? ? ? ? ? ? ? ? ? ? ? 學號:
? ? ? ? ? ? ? ? ? ? </td>
? ? ? ? ? ? ? ? ? ? <td align="center" width="300px">
? ? ? ? ? ? ? ? ? ? ? ? <input type="text" id=userid name="user" onblur="validate();">
? ? ? ? ? ? ? ? ? ? ? ? <div id=usermsg></div>
? ? ? ? ? ? ? ? ? ? </td>
? ? ? ? ? ? ? ? </tr>
? ? ? ? ? ? ? ? <tr>
? ? ? ? ? ? ? ? ? ? <td align="center" width="100px">
? ? ? ? ? ? ? ? ? ? ? ? 姓名:
? ? ? ? ? ? ? ? ? ? </td>
? ? ? ? ? ? ? ? ? ? ? ? <td align="center">
? ? ? ? ? ? ? ? ? ? ? ? <input type="text" name="name">
? ? ? ? ? ? ? ? ? ? </td>
? ? ? ? ? ? ? ? </tr>
? ? ? ? ? ? ? ? <tr>
? ? ? ? ? ? ? ? ? ? <td align="center" width="%45">
? ? ? ? ? ? ? ? ? ? ? ? 性別:
? ? ? ? ? ? ? ? ? ? </td>
? ? ? ? ? ? ? ? ? ? <td align="center">
? ? ? ? ? ? ? ? ? ? ? ? <input type="radio" name="sex" value="男">
? ? ? ? ? ? ? ? ? ? ? ? 男
? ? ? ? ? ? ? ? ? ? ? ? <input type="radio" name="sex" value="女">
? ? ? ? ? ? ? ? ? ? ? ? 女
? ? ? ? ? ? ? ? ? ? </td>
? ? ? ? ? ? ? ? </tr>
? ? ? ? ? ? ? ? <tr>
? ? ? ? ? ? ? ? ? ? <td align="center" width="30%">
? ? ? ? ? ? ? ? ? ? ? ? 年齡:
? ? ? ? ? ? ? ? ? ? </td>
? ? ? ? ? ? ? ? ? ? <td align="center" width="300px">
? ? ? ? ? ? ? ? ? ? ? ? <input type="text" name="age">
? ? ? ? ? ? ? ? ? ? </td>
? ? ? ? ? ? ? ? </tr>
? ? ? ? ? ? ? ? <tr>
? ? ? ? ? ? ? ? ? ? <td align="center" width="100px">
? ? ? ? ? ? ? ? ? ? ? ? 地址:
? ? ? ? ? ? ? ? ? ? </td>
? ? ? ? ? ? ? ? ? ? <td align="center" width="300px">
? ? ? ? ? ? ? ? ? ? ? ? <input type="text" name="addr">
? ? ? ? ? ? ? ? ? ? </td>
? ? ? ? ? ? ? ? </tr>
? ? ? ? ? ? </table>
? ? ? ? </form>
? ? ? ?
? ? ? ?
? ? ? ? <input type="button" onclick="getTagElements()"
? ? ? ? ? ? value="看看標簽名為tr的節(jié)點有幾個?" />
? ? ? ? ? ??
? ? ? ?
? ? </body>
</html>
2016-03-31
哈哈, 我知道這個,剛剛我就發(fā)現(xiàn)這個問題了,找了半天終于找到是什么原因了:
首先,你輸出document后,會覆蓋<body>里面的所有內容,所以input的這個元素就沒有了,自然就沒法查看有多少個節(jié)點了。為什么第一個document能輸出出來呢,因為輸出第一個后他就覆蓋了<body>里面的元素,這個時候<body>里面就只有doument輸出出來的數(shù)字,第二個第三個document找不到input這些標簽,所以只有第一個是正常的。
2016-03-24
我不明白你所說的錯誤是什么,我覺得可能你覺得,這個東西跑完之后不會像你的alert一樣在當前窗口輸出結果。我們通常按照兩種的方式使用 write() 方法:一是在使用該方在文檔中輸出 HTML,另一種是在調用該方法的的窗口之外的窗口、框架中產(chǎn)生新文檔。在第二種情況中,請務必使用 close() 方法來關閉文檔。
而我覺得你現(xiàn)在覺得的所謂的錯誤可能就是你并沒有注意到你已經(jīng)用到了document.write的第二種方法,因為JavaScript在跑的過程當中不會涉及到html當中的對象,我們的瀏覽器只是因為有了相應的JavaScript的解釋器,所以當我們在界面當中寫入JavaScript之后,是我們?yōu)g覽器默認的采用自己的JavaScript解釋器來解釋了相關語句,進而進一步來確定瀏覽器自身該在哪里進行相應的修飾。