Javascript 如何从HTML的内部文本中删除(仅)星号<;td>;组件?
我正试图找出如何从Javascript 如何从HTML的内部文本中删除(仅)星号<;td>;组件?,javascript,jquery,html,html-table,innerhtml,Javascript,Jquery,Html,Html Table,Innerhtml,我正试图找出如何从组件的innerHTML中删除/替换“星号” 我有一个包含相同自由文本和输入控件的。 在下面的示例中,假设==this $(this)[0].innerHTML "* <input name="ctl00$MainContent$TxnDate" type="text" id="TxnDate" class="DetailTextBox dvFieldTypeDateTime dvRequiredField hasDatepicker validatio
组件的innerHTML中删除/替换“星号”
我有一个包含相同自由文本和输入控件的。
在下面的示例中,假设
==this
$(this)[0].innerHTML
"* <input name="ctl00$MainContent$TxnDate" type="text" id="TxnDate" class="DetailTextBox dvFieldTypeDateTime dvRequiredField hasDatepicker validationFailed" style="width:250px;"> 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以更新值。真正的问题是去掉星号。替换为正则表达式似乎也会清除我的控件中包含的任何值。同样,此解决方案会清除也包含在我的控件中的输入控件的内容