0

我正在尝试从 td 中提取文本,如此处所述 Replacing a part of text inside a 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

不要使用.eq(1)[0],而只是.get(0)为了获取普通的 DOM 节点。另外,不要使用两种不同的方式来获取相同的文本节点,而只能使用一种方式并将其存储在变量中。让我们检查一下发生了什么:

$('.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 回答