我试图找出如何删除/替换&#34;星号&#34;来自<td>
组件的innerHTML。
我有一个包含相同的自由文本和输入控件。
在以下示例中假设<td>
== this
$(this)[0].innerHTML
"* <input name="ctl00$MainContent$TxnDate" type="text" id="TxnDate" class="DetailTextBox dvFieldTypeDateTime dvRequiredField hasDatepicker validationFailed" style="width:250px;"> Required Field"
如何从内部HTML替换/删除星号?
$(this)[0].innerHTML[0]
我试过了:
$(this)[0].innerHTML.replace(/\*/g, '');
但这似乎删除了输入控件的当前内容。
答案 0 :(得分:1)
您拥有的正则表达式是正确的,您需要将更改的html分配回innerHTML
,然后检查here
this.innerHTML = this.innerHTML.replace(/\*/g, '');
分配更改后的html
后,您将无法获得*
修改
如果您只想替换第一个节点,即*
,那么您只需要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();