Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这个javascript代码不起作用?_Javascript_Jquery - Fatal编程技术网

为什么这个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")');
    });
});