为什么这段 JavaScript 代码不起作用?

发布于 2024-11-09 03:18:08 字数 466 浏览 0 评论 0 原文

你知道为什么失败吗,我的意思是警报正在工作(它向我显示,如果找到按钮),但文本或背景没有更改:

    $('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..

Do you know why this is failing, I mean alert is working (it shows me that if found the button) but text or background is not changed:

    $('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"/>

Thanks...

I have to use plain java script not jQuery..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

喜爱纠缠 2024-11-16 03:18:08

您正在设置 NodeList 的 valuestylegetElementsByName 可以检索多个元素,因为 name 属性在文档中不必是唯一的(线索就在名称中!)设置这些没有任何效果 - 它不会不会影响 NodeList 中元素的属性。

手动循环遍历元素(使用 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)"});
});

请参阅 jQuery API

You're setting value and style of a NodeList. getElementsByName can retrieve multiple elements, as the name 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:

$('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)"});
});

See the jQuery API:

生死何惧 2024-11-16 03:18:08

看起来 var button=document.getElementsByName("contactme"); 将返回一个元素数组。尝试:

var button=document.getElementsByName("contactme")[0];

It looks like var button=document.getElementsByName("contactme"); would return an array of elements. Try:

var button=document.getElementsByName("contactme")[0];
清旖 2024-11-16 03:18:08

getElementsByName 将返回一个 nodeList,但 valuestyle 是 HTMLElementNodes 的属性。您必须遍历列表才能获取它们。

getElementsByName will return a nodeList but value and style are properties of HTMLElementNodes. You have to loop over the list to get them.

万劫不复 2024-11-16 03:18:08
$('input[type=button]').click(function() {
     $("#contactme").val('New Button Text').css('background-image', 'url(some_real_gif)');
});

您需要确保按钮 ID 与名称匹配...

$('input[type=button]').click(function() {
     $("#contactme").val('New Button Text').css('background-image', 'url(some_real_gif)');
});

You would need to make sure the button id matches the name...

对风讲故事 2024-11-16 03:18:08

因为按钮是一个元素列表(即使它是一个元素的列表),

您可以做的是使用 button[0].valuebutton[0].style.background

或者使用 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")');
    });
});

Because button is a list of elements (even if it is a list of one)

What you can do is use button[0].value and button[0].style.background

Or use a jQuery solution:

To change only clicked button:

$('input[type=button]').click( function() 
{
    $(this).val("New Button Text");
   $(this).css('background-image','url("some_real_gif")');
});

To change all buttons:

$('input[type=button]').click( function() 
{
   $('input[type=button]').each(function(){
        $(this).val("New Button Text");
        $(this).css('background-image','url("some_real_gif")');
    });
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文