0

ここで説明するように、tdからテキストを抽出しようとしています。td 内のテキストの一部を置き換える

$('.my-table tr').each(function() {

     var contact = $(this).find('td').eq(1)[0].childNodes[0].nodeValue;
     $(this).find('td').eq(1).contents()[0].data = contact.substring(0,10);
});

しかし、contact.substring(0,10); 動作していないようで、空の状態で表示されます。

どうすればこれを修正できますか?

4

3 に答える 3

1

これを試して:

$('.my-table tr').each(function() {

     var contact = $.trim($(this).find('td').eq(1)[0].childNodes[0].nodeValue);
     if(contact != '')
     {
         var value = contact.substring(0,10);
         alert(value);
         $(this).find('td').eq(1).contents()[0].data = contact.substring(0,10);
     }
});

あなたが得ているアラート値は何ですか?またはアラートを受け取っていますか?

于 2012-12-07T13:27:42.350 に答える
1

を使用しないでください。ただし、プレーンなDOMノードを取得するため.eq(1)[0]だけに使用してください。.get(0)また、同じテキストノードを取得するために2つの異なる方法を使用するのではなく、1つだけを使用して、それを変数に格納します。何が起こったのかを確認しましょう:

$('.my-table tr').each(function() {

     var cell = $('td', this);
     if (!cell.length)
         return alert("Could not find a table cell");

     var el = cell.get(0);
     if (!el) alert("Could not get first element"); // Won't happen if length was >0

     if (!el.childNodes.length)
         return alert("Cell is empty!");

     var text = el.childNodes[0];
     if (cell.contents()[0] != text) alert("different firstChilds???"); // Won't happen
     if (text.nodeType != 3)
         return alert("the first child node is not a text node!");

     var contact = text.nodeValue;
     if (text.data != contact) alert("different contents???"); // Won't happen
     if (typeof contact != "string") alert("content is no string"); // Won't happen

     var newcontact = contact.substring(0,10);
     alert('"'+contact+'" was changed to "'+newcontact+'"');
     text.data = newcontact;
});

jsfiddle.netでのデモ

于 2012-12-07T13:56:34.487 に答える
0

まず第一に、連絡先はあなたが必要とするものを保持していますか?console.logのcontact値ですか?

連絡に問題がない場合は、次のようにしてみてください。

var contact = new String($(this).find('td').eq(1)[0].childNodes[0].nodeValue);
于 2012-12-07T13:24:34.490 に答える