-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

$(htmlData).contents() が有効な jQuery オブジェクトを返すと仮定すると、.trim() の代わりに $.trim($(this).html()) を使用します。

于 2013-07-19T22:27:49.660 に答える
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));
     }
}

.nodeValueetextノードのデータにアクセスするために使用できます

于 2013-07-19T21:37:03.563 に答える
0

innerHTMLテキスト ノードにはプロパティがありません。

于 2013-07-19T21:36:50.613 に答える