我正在尝试从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);似乎没有用,它只显示为空。
我该如何解决这个问题?
答案 0 :(得分: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);
}
});
你得到的警报值是多少?或者你收到任何警报??
答案 1 :(得分: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;
});
答案 2 :(得分:0)
首先,联系是否符合您的需求?我的意思是你是console.log contact
值吗?
如果联系正常,请尝试以下方式:
var contact = new String($(this).find('td').eq(1)[0].childNodes[0].nodeValue);