为什么这段 JavaScript 代码不起作用?
你知道为什么失败吗,我的意思是警报正在工作(它向我显示,如果找到按钮),但文本或背景没有更改:
$('input[type=button]').click( function() {
var button=document.getElementsByName("contactme");
alert(button.length + " elements!");
button.value="New Button Text";
button.style.backgroundImage="url(some_real_gif);"
});
HTML:
<input type="button" name="contactme" value="test"/>
谢谢...
我必须使用纯java脚本而不是jQuery..
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您正在设置 NodeList 的
value
和style
。getElementsByName
可以检索多个元素,因为name
属性在文档中不必是唯一的(线索就在名称中!)设置这些没有任何效果 - 它不会不会影响 NodeList 中元素的属性。手动循环遍历元素(使用
for
循环)或完全使用 jQuery:请参阅 jQuery API:
val
css
[名称=“值”]
)You're setting
value
andstyle
of a NodeList.getElementsByName
can retrieve multiple elements, as thename
attribute does not have to be unique in the document (the clue's in the name!) Setting these has no effect -- it doesn't affect the properties of the element(s) within the NodeList.Either loop through the element(s) manually (using a
for
loop) or fully use jQuery:See the jQuery API:
val
css
[name="value"]
)看起来
var button=document.getElementsByName("contactme");
将返回一个元素数组。尝试:It looks like
var button=document.getElementsByName("contactme");
would return an array of elements. Try:getElementsByName
将返回一个 nodeList,但value
和style
是 HTMLElementNodes 的属性。您必须遍历列表才能获取它们。getElementsByName
will return a nodeList butvalue
andstyle
are properties of HTMLElementNodes. You have to loop over the list to get them.您需要确保按钮 ID 与名称匹配...
You would need to make sure the button id matches the name...
因为按钮是一个元素列表(即使它是一个元素的列表),
您可以做的是使用
button[0].value
和button[0].style.background
或者使用 jQuery 解决方案:
仅更改单击的按钮:
更改所有按钮:
Because button is a list of elements (even if it is a list of one)
What you can do is use
button[0].value
andbutton[0].style.background
Or use a jQuery solution:
To change only clicked button:
To change all buttons: