【发布时间】:2013-08-02 23:53:18
【问题描述】:
我刚刚开始阅读 JavaScript,我正在尝试编写一个小型递归函数,该函数将搜索给定节点并以字符串形式返回值列表。
我的 HTML 结构可能类似于
<div id="parentfolder">parentfolder1
<div class ="item1">item1</div>
<div class ="item2">item2</div>
<div id="parentfolder">parentfolder2
<div class ="item1">item1</div>
<div class ="item2">item2</div>
</div>
</div>
这是我的 Javascript 函数:
function jsoncreator(parentfolderclass){
var jstring = '';
//get first occurance of parent folder
var parentfolder = document.getElementById(parentfolderclass);
var childnodes = parentfolder.childNodes;
for (property in childnodes){
jstring += property+ childnodes[property];
if(childnodes[property] === parentfolderclass){
jsoncreator(parentfolderclass);
jstring += childnodes[property].value + '<br>';
}
else{
//jstring += childnodes[i].value + '<br>';
}
}
document.write(jstring);
}
我回来的只是
0[object Text]1[object HTMLDivElement]2[object Text]3[object HTMLDivElement]4[object Text]5[object HTMLDivElement]6[object Text]length7itemfunction item() { [native code] }
当我尝试打印子节点值时,我得到一堆未定义的返回。
如果有人能解释我做错了什么,我将不胜感激。
【问题讨论】:
-
首先,重复的 ID 不是有效的 HTML。除此之外,您实际上并没有准确描述返回的数组应包含的内容。
-
@FabrícioMatté 它会以字符串形式返回值列表
-
文本内容中的“值”?
-
childnodes[property] === parentfolder没有意义,因为节点不能是其自身的后代;var d = document.createElement('div'); d.appendChild(d); // Error: HierarchyRequestError: DOM Exception 3 -
@PaulS。这是一个错字。它现在固定了。虽然,它没有做任何改变..
标签: javascript jquery recursion iteration