我很难将两个实例的“跑步者”改为“队长”
<form id="thisForm">
<table>
<tr bgcolor="#eeeeee">
<td valign="top" colspan="4" style="vertical-align: top;">
<input type="radio" onclick="javascript:teamAction('form')" value="none" name="teamAct">
<b>Become</b> a Runner
</td>
</tr>
<tr bgcolor="#eeeeee">
<td valign="top" colspan="4" style="vertical-align: top;">
<input type="radio" onclick="javascript:teamAction('form')" value="none" name="teamAct">
<b>Support</b> a Runner
</td>
</tr>
</table>
</form>我能够使用以下方法更改第一个实例:
document.getElementById("thisForm").innerHTML = document.getElementById("thisForm").innerHTML.replace(" a Runner", " a Team Captain");请参阅jsfiddle:http://jsfiddle.net/jelane20/voxnmwpn/
发布于 2014-08-13 13:41:48
使用全局开关(replace(/ a Runner/g," a Team Captain"))替换:
document.getElementById("thisForm").innerHTML=document.getElementById("thisForm").innerHTML.replace(/ a Runner/g," a Team Captain");jsFiddle实例
发布于 2014-08-13 13:42:12
您的代码只是替换第一次出现的代码。您可以将其转换为regex并使用全局匹配g参数:
document.getElementById("thisForm").innerHTML = document.getElementById("thisForm").innerHTML.replace(/a Runner/g, " a Team Captain");更新小提琴
如果您想要一个jQuery实现,可以通过直接更改textNodes来避免对整个表的textNodes进行处理。试试这个:
$('#thisForm td').each(function() {
var contents = $(this).contents().filter(function() {
return this.nodeType == 3;
});
contents[contents.length -1].nodeValue = " a Team Captain";
});例琴
发布于 2014-08-13 13:42:29
只需将搜索模式更改为带有全局(/g)标志的正则表达式对象:
$('#thisForm').html(function(i, html) {
return html.replace(/a Runner/g," a Team Captain");
});演示
这也可以很容易地扩展到对每一行进行操作,允许首先应用过滤器:
$('#thisForm tr').html(function(i, html) {
return html.replace(/a Runner/g," a Team Captain");
});https://stackoverflow.com/questions/25287676
复制相似问题