从Node获取所有孩子

时间:2014-03-29 18:55:25

标签: javascript jquery html5

我有一个脚本可以从HTML子树中获取所有子项,这些子树是文本类型。我写了但是它并没有为任何节点而烦恼

$(document).ready(function () {
    var result;
    $.each($("li").contents(), function(i, v){
        if(v.nodeType == 3){
            result = result + " " + v.nodeValue;
        }
    });
    alert(result);
});

3 个答案:

答案 0 :(得分:2)

您需要将result初始化为空字符串:

var result = '';

Demo

如果没有,则result初始化为undefined

undefined + 'someString' === 'undefinedsomeString'

答案 1 :(得分:1)

试试这个:

$(document).ready(function () {
    var result = "";
    $("li").each(function() {
       result += $(this).text();
    });
    alert(result);
});

答案 2 :(得分:0)

在ES6中,我认为这更具可读性:

var result = [].slice.call($("li").contents())
    .filter(v => v.nodeType == 3)
    .map(v => v.nodeValue)
    .join(' ');
alert(result);

在ES5中,它更详细:

var result = [].slice.call($("li").contents())
    .filter(function(v){ return v.nodeType == 3; })
    .map(function(v){ return v.nodeValue; })
    .join(' ');
alert(result);