如何从HTML组件的内部文本中删除(仅)星号?

时间:2014-08-20 04:43:13

标签: javascript jquery html html-table innerhtml

我试图找出如何删除/替换&#34;星号&#34;来自<td>组件的innerHTML。

我有一个包含相同的自由文本和输入控件。 在以下示例中假设<td> == this

$(this)[0].innerHTML
"*&nbsp;<input name="ctl00$MainContent$TxnDate" type="text" id="TxnDate" class="DetailTextBox dvFieldTypeDateTime dvRequiredField hasDatepicker validationFailed" style="width:250px;">&nbsp;Required Field"

如何从内部HTML替换/删除星号?

$(this)[0].innerHTML[0]

我试过了:

$(this)[0].innerHTML.replace(/\*/g, '');

但这似乎删除了输入控件的当前内容。

4 个答案:

答案 0 :(得分:1)

您拥有的正则表达式是正确的,您需要将更改的html分配回innerHTML,然后检查here

this.innerHTML = this.innerHTML.replace(/\*/g, '');

分配更改后的html后,您将无法获得*

Live Demo

修改

如果您只想替换第一个节点,即*&nbsp;,那么您只需要firstChild

<强> Live Demo

firstChild = this.firstChild;
firstChild.nodeValue = firstChild.nodeValue.replace(/\*/g, '');

要排除输入,您可以使用nodeType仅对通过遍历子项迭代的html元素的子元素的文本元素应用替换。

<强> Live Demo

function removeAsterisk(htmlParentObject)
{
    nextsib = htmlParentObject.firstChild;
    while(nextsib != null)
    {
        if(nextsib.nodeType === 3);
              nextsib.nodeValue = nextsib.nodeValue.replace(/\*/g, '');
        nextsib = nextsib.nextSibling;    
    }
}

答案 1 :(得分:0)

当你使用jquery时,你可以这样说

$(this).eq(0).html($(this).html().replace(/\*/g, ''))

答案 2 :(得分:0)

试试这个例子:

<强>脚本

var ps = document.getElementsByTagName('p');
var l = ps.length;
if (l--) do {
    ps[l].innerHTML = ps[l].innerHTML.replace(/\*/g, '');
} while (l--);

<强> HTML

<p>hi there*, everyone* !</p>
<p>LOL* !</p>

<强>输出

hi there, everyone !

LOL !

答案 3 :(得分:0)

试试这个解决方案:

$('td.validationFailed').contents().filter(function() { 
    return this.nodeType == 3 && this.wholeText.indexOf('*') > -1; 
})
.remove();

Working Demo

通过user3558931