1
嗨,我剛剛開始使用Dojo。我正在玩節點列表遍歷,並發現以下行爲。Dojo節點列表遍歷中令人困惑的行爲
dojo.query("form.searchform").forEach(function(node, index, arr){
var f = dojo.query("form.searchform");
alert(f[0]); //[object HTMLFormElement]
alert(node); //[object HTMLFormElement]
alert(f.children()); //[object HTMLInputElement] as expected
alert(node.children()); //undefined. why??
});
Searchform如下:
<form class="searchform" name="docsearch" method="post"
action="somelink.php"><input class="searchbox" name="search"
type="text" value="" id="search" name="search" size="30"/>
</form>
這到底是怎麼回事?我想在foreach循環中使用節點來訪問它的子節點。我怎麼做?
編輯: 這並不完全清楚爲什麼children()沒有工作,但下面的代碼解決了這個問題。
var f = dojo.query("form.searchform");
alert(f[0]); //[object HTMLFormElement]
alert(node); //[object HTMLFormElement]
alert(f.children()); //[object HTMLInputElement] as expected
for(i=0;node.childNodes[i] != undefined; i++){
if (node.childNodes[i].nodeType == 1) {
alert(node.childNodes[i].value); // gives value of searchbox.
}
}
不,這沒有幫助。 儘管nodeType爲1,if條件得到滿足。 我猜這意味着節點沒有孩子。 它可能有助於指出,f [0] .children也是未定義的。 那麼,HTMLFormElement是指什麼節點? searchform是html頁面中的唯一形式。 – crazyphoton 2012-02-09 04:40:47
NodeType不保證它有孩子。它只是說它是一個元素節點。我沒有注意到,但不是node.childNodes而不是node.children? – 2012-02-09 12:54:12
是的,我想知道那個節點是什麼。 如果我在if區塊內部提醒(node.innerHTML),我得到: \t \t \t \t \t 爲什麼這不是一個孩子? 和孩子是道場功能http://dojotoolkit.org/api/1.5/dojo/NodeList/children – crazyphoton 2012-02-11 00:57:20