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

Javascript 如何从HTML的内部文本中删除(仅)星号<;td>;组件?,javascript,jquery,html,html-table,innerhtml,Javascript,Jquery,Html,Html Table,Innerhtml,我正试图找出如何从组件的innerHTML中删除/替换“星号” 我有一个包含相同自由文本和输入控件的。 在下面的示例中,假设==this $(this)[0].innerHTML "*&nbsp;<input name="ctl00$MainContent$TxnDate" type="text" id="TxnDate" class="DetailTextBox dvFieldTypeDateTime dvRequiredField hasDatepicker validatio

我正试图找出如何从
组件的innerHTML中删除/替换“星号”

我有一个包含相同自由文本和输入控件的。 在下面的示例中,假设
==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"
我试过:

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

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

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

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

编辑

如果只想替换第一个节点,即
*
,则只需
第一个子节点

firstChild = this.firstChild;
firstChild.nodeValue = firstChild.nodeValue.replace(/\*/g, '');
function removeAsterisk(htmlParentObject)
{
    nextsib = htmlParentObject.firstChild;
    while(nextsib != null)
    {
        if(nextsib.nodeType === 3);
              nextsib.nodeValue = nextsib.nodeValue.replace(/\*/g, '');
        nextsib = nextsib.nextSibling;    
    }
}
要排除输入,可以使用
nodeType
通过迭代child,仅对作为html元素子元素的文本元素应用replace

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

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

$(this).eq(0).html($(this).html().replace(/\*/g, ''))
试试这个例子:

脚本

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

LOL !
html

<p>hi there*, everyone* !</p>
<p>LOL* !</p>
尝试以下解决方案:

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

通过

尝试使用
$(this.eq(0).html($(this.html().replace(/\*/g'))
。我不建议这样做,因为它会用itwhy
$(this)[0]中的
*
更新任何属性值。innerHTML
this.innerHTML
will doAdil:我知道重新分配回原始innerHTML以更新值。真正的问题是去掉星号。替换为正则表达式似乎也会清除我的控件中包含的任何值。同样,此解决方案会清除也包含在我的控件中的输入控件的内容