【发布时间】:2018-11-03 01:56:20
【问题描述】:
我想创建一个书签来替换网页上每个输入字段的所有值。它们有很多,但可以根据它们的名称分为两类。
例子:
<input class="Class1" name="ABC_randomnumbers" value="randomnumber" type="text">
<input class="Class1" name="DEF_randomnumbers" value="randomnumber" type="text">
名称以 ABC 开头的输入字段将接收值 X,名称以 DEF 开头的输入字段将接收值 Y。 我试过了
javascript:document.body.innerHTML=document.body.innerHTML.replace(/input class="Class1" name="ABC_(\d+)" value="\d+"/g,'input class="Class1" name="ABC_$1" value="X"'); document.body.innerHTML=document.body.innerHTML.replace(/input class="Class1 name="DEF_(\d+)" value="\d+"/g,'input class="Class1" name="DEF_$1" value="Y"');
替换所有出现在 HTML 中的这些字符串,但它会弄乱整个页面,例如它会删除标记的内容。 我读过一些关于 getElementsByName 的内容,但它们的名称不同,我无法使用 getElementsByName 进行正则表达式。
【问题讨论】:
-
您是否尝试过使用
getElementsByClassName()或者可能使用querySelectorAll()? -
getElementsByClassName()不好,因为有两种类型的输入字段,一种名称为 ABC_randomnumbers,另一种名称为 DEF_randomnumbers (每个输入字段的这些数字也不同)并且它们必须接收不同的值。不过我没听说过querySelectorAll() -
例如,如果您想使用
querySelectorAll来定位所有inputs在name属性的值中包含_randomnumbers,您可以使用... @ 987654331@ -
对不起,
_randomnumbers真的是后端生成的一串随机数。每个input字段都不同。示例:<input class="Class1" name="ABC_142315" value="634624" type="text"> <input class="Class1" name="DEF_512325" value="743534" type="text"> <input class="Class1" name="ABC_124156" value="525246" type="text"> <input class="Class1" name="DEF_141534" value="624253" type="text"> ... -
你是不是这个意思JsFiddle Demo
标签: javascript replace innerhtml bookmarklet getelementsbyname