-1

我正在尝试使用以下代码将html标记放入我的array

//my htmlData which is entered by user so it could be varies.
<em>test</em> here for the testing purpose
second line <strong>texts</strong> here

我想array通过使用将它们存储在我的

var data = [];
$(htmlData).contents().each(function(){
           data.push($(this).html().trim());
     }

但我有一个错误说Uncaught TypeError: Cannot call method 'trim' of null.

不知道为什么$(this).html()会返回一个null.

有人能帮我一下吗?非常感谢!

4

3 回答 3

1

应该是问题text nodes.因为他们没有innerHTML属性尝试将它们过滤掉

var data = [];
$(htmlData).contents().each(function(){
     var nodeType = this.nodeType;
     if(nodeType === 1) { // Will only select element nodes
        data.push($.trim($(this).html()));
     } 
     else if(nodeType === 3) {
        data.push($.trim(this.nodeValue));
     }
}

可以.nodeValue用来访问 th etext 节点的数据

于 2013-07-19T21:37:03.563 回答
1

假设 $(htmlData).contents() 返回一个有效的 jQuery 对象,使用 $.trim($(this).html()) 而不是 .trim()

于 2013-07-19T22:27:49.660 回答
0

文本节点没有innerHTML属性。

于 2013-07-19T21:36:50.613 回答