为什么这个javascript代码不起作用?
你知道为什么失败吗?我的意思是警报正在工作(它显示如果找到按钮),但文本或背景没有改变:为什么这个javascript代码不起作用?,javascript,jquery,Javascript,Jquery,你知道为什么失败吗?我的意思是警报正在工作(它显示如果找到按钮),但文本或背景没有改变: $('input[type=button]').click( function() { var button=document.getElementsByName("contactme"); alert(button.length + " elements!"); button.value="New Button Text"; button.style.backgro
$('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:
谢谢
我必须使用普通java脚本而不是jQuery。
getElementsByName
将返回节点列表,但value
和style
是HTMLElementNodes的属性。您必须循环列表才能获得它们。您正在设置节点列表的值和样式getElementsByName
可以检索多个元素,因为name
属性在文档中不必是唯一的(线索在名称中!)这些设置没有效果——它不会影响节点列表中元素的属性
手动循环元素(使用for
循环)或完全使用jQuery:
$('input[type=button]').click(function () {
var buttons = $('input[name="contactme"]');
alert(buttons.length + " elements!");
buttons.val("New Button Text");
buttons.css({backgroundImage: "url(some_real_gif)"});
});
见:
它看起来像var button=document.getElementsByName(“contactme”)
将返回一个元素数组。尝试:
var button=document.getElementsByName("contactme")[0];
您需要确保按钮id与名称匹配…,因为按钮是一个元素列表(即使它是一个元素列表)
您可以使用按钮[0]。值
和按钮[0]。样式。背景
或者使用jQuery解决方案:
要仅更改单击的按钮,请执行以下操作:
$('input[type=button]').click( function()
{
$(this).val("New Button Text");
$(this).css('background-image','url("some_real_gif")');
});
要更改所有按钮,请执行以下操作:
$('input[type=button]').click( function()
{
$('input[type=button]').each(function(){
$(this).val("New Button Text");
$(this).css('background-image','url("some_real_gif")');
});
});
我正在输入完全相同的代码(甚至将“按钮”重命名为“按钮”):)确保在属性过滤器之前添加标签名或其他选择器,以免给你的炼狱痛苦增加天数;o) $('input[name=“contactme”]”)
@patrick dw,这可能包括被迫使用未实现querySelectorAll
的浏览器。完成-谢谢。如果有多个按钮具有相同的名称,则ID无法匹配(如果您想要有效的HTML,则至少不能匹配)。是的,但为什么要有多个按钮具有相同的名称?因为您有服务器端代码,可以根据单击的按钮执行某些操作,打开按钮名称
的值比检查此按钮名称
或该按钮名称
是否提交了值更简单。不一定是这么说的,但事实上,代码会显示出它找到了多少个按钮,这让它看起来可能不止一个。“我必须使用纯java脚本,而不是jQuery…”那么为什么你的问题中有jQuery代码呢?如果你不应该使用jQuery,那么你为什么要用它来选择按钮并附加点击功能呢?事实上,这就是问题所在。
$('input[type=button]').click( function()
{
$(this).val("New Button Text");
$(this).css('background-image','url("some_real_gif")');
});
$('input[type=button]').click( function()
{
$('input[type=button]').each(function(){
$(this).val("New Button Text");
$(this).css('background-image','url("some_real_gif")');
});
});