我正在尝试做一个非常简单的事情,即在Firefox中使用javascript bookmarklet填充输入框。
以下是相关代码和屏幕截图的摘要:
<input id="T22401715851381308556344_j_id_id0:freeSMSBean:receiverNumber" class="text" type="text" style="POSITION: absolute;" onblur="validateReceiverNumber(this,'');" maxlength="10" value="" name="T22401715851381308556344_j_id_id0:freeSMSBean:receiverNumber"></input>
我可以使用以下javascript bookmarklet填写值:
javascript:{document.getElementsByName('T22401715851381308556344_j_id_id0:freeSMSBean:receiverNumber')[0].value='1234';void(0)}
然而问题是名称的粗体部分不断变化。 的 T22401715851381308556344_j_id_id0 :freeSMSBean:receiverNumber
我想知道我可以使用通配符以某种方式匹配更改的部分。或者是否有更好的解决方案来填写此输入框?
由于
答案 0 :(得分:2)
您可以将$=
selector与querySelectorAll
:
document.querySelectorAll("[name$=\":freeSMSBean:receiverNumber\"]");
小提琴:http://jsfiddle.net/DerekL/869p6knz/
querySelectorAll
是document
和Element
的一种方法,可让您搜索具有有效CSS选择器的元素。
querySelector
也可用。
答案 1 :(得分:0)
我不认为您可以使用document.getElementsByName
执行此操作,但您可以使用document.querySelector
执行此操作:
var textbox = document.querySelector('input[type="text"][name$=":freeSMSBean:receiverNumber"]');
// do whatever you wanna do with textbox
如果您想获取name属性以:freeSMSBean:receiverNumber
结尾的所有文本框,则可以改为使用document.querySelectorAll
。
var textboxes = document.querySelectorAll('input[type="text"][name=":freeSMSBean:receiverNumber"]');