我可能丟失/做一些愚蠢的,但我似乎不能工作了這一點:奇怪的JavaScript循環行爲的Jquery追加
這裏的顯示問題小提琴: https://jsfiddle.net/jhqjmcn4/1/
請注意,您需要打開控制檯才能看到發生了什麼。
基本上,在這個例子中,我有兩個函數包含一個for循環,除了第二個包含JQuery附加外,它們是相同的。
該函數的目標是從一個字符串中獲取html元素,該元素在第一個函數中工作正常,但不是第二個。
從控制檯中可以看出,這會導致任何不是文本節點的內容被忽略,也不會被添加到列表中。在這種情況下,b和p標籤不包含在內。
這裏再次代碼:
JS:
function parse_text(text) {
var div = document.createElement("DIV");
div.innerHTML = text;
var elements = div.childNodes;
var container = jQuery("#container");
var list = [];
for (var i = 0; i < elements.length; i++){
var element = elements[i];
list.push(element);
console.log("First", list);
}
}
function parse_text_two(text) {
var div = document.createElement("DIV");
div.innerHTML = text;
var elements = div.childNodes;
var container = jQuery("#container2");
var list = [];
for (var p = 0; p < elements.length; p++){
var element = elements[p];
list.push(element);
console.log("Second", list);
container.append(element);
}
}
var text = "Here is <b>some</b> text with <p>html</p> in it";
parse_text(text);
parse_text_two(text);
HTML(無關):
<div id="container">
</div>
<div id="container2">
</div>
在此先感謝。
目的是什麼? – Satpal
這兩種方法都正常工作......您面臨的問題是什麼? – Samir
問題出在第二個函數中,當應用程序運行時,element.length包含5,但是對於每次迭代,這個長度會發生變化,並且element.length將變爲3.這是因爲container.append函數 –