為什么用alert輸出正常,全部換成document.write錯(cuò)誤;只用一個(gè)document.write值也正常,兩個(gè)就錯(cuò)誤呢?
<!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">
? ? ? ? ? ? ? ? ? ? ? ? 學(xué)號(hào):
? ? ? ? ? ? ? ? ? ? </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="看看標(biāo)簽名為tr的節(jié)點(diǎn)有幾個(gè)?" />
? ? ? ? ? ??
? ? ? ?
? ? </body>
</html>
2016-03-31
哈哈, 我知道這個(gè),剛剛我就發(fā)現(xiàn)這個(gè)問題了,找了半天終于找到是什么原因了:
首先,你輸出document后,會(huì)覆蓋<body>里面的所有內(nèi)容,所以input的這個(gè)元素就沒有了,自然就沒法查看有多少個(gè)節(jié)點(diǎn)了。為什么第一個(gè)document能輸出出來呢,因?yàn)檩敵龅谝粋€(gè)后他就覆蓋了<body>里面的元素,這個(gè)時(shí)候<body>里面就只有doument輸出出來的數(shù)字,第二個(gè)第三個(gè)document找不到input這些標(biāo)簽,所以只有第一個(gè)是正常的。
2016-03-24
我不明白你所說的錯(cuò)誤是什么,我覺得可能你覺得,這個(gè)東西跑完之后不會(huì)像你的alert一樣在當(dāng)前窗口輸出結(jié)果。我們通常按照兩種的方式使用 write() 方法:一是在使用該方在文檔中輸出 HTML,另一種是在調(diào)用該方法的的窗口之外的窗口、框架中產(chǎn)生新文檔。在第二種情況中,請務(wù)必使用 close() 方法來關(guān)閉文檔。
而我覺得你現(xiàn)在覺得的所謂的錯(cuò)誤可能就是你并沒有注意到你已經(jīng)用到了document.write的第二種方法,因?yàn)镴avaScript在跑的過程當(dāng)中不會(huì)涉及到html當(dāng)中的對象,我們的瀏覽器只是因?yàn)橛辛讼鄳?yīng)的JavaScript的解釋器,所以當(dāng)我們在界面當(dāng)中寫入JavaScript之后,是我們?yōu)g覽器默認(rèn)的采用自己的JavaScript解釋器來解釋了相關(guān)語句,進(jìn)而進(jìn)一步來確定瀏覽器自身該在哪里進(jìn)行相應(yīng)的修飾。