【问题标题】:document.getElementsByClassName().innerHTML always returns "undefined"document.getElementsByClassName().innerHTML 总是返回“未定义”
【发布时间】:2013-07-27 10:27:46
【问题描述】:

我一定是在某个地方出错了,所以document.getElementsByClassName().innerHTML 总是返回undefined

首先我通过javascript生成<li>

$('#list').append('<li class="box"><img class="picture" src="images/HotPromo/tagPhoto1.png"/><p class="name"><b>Name</b></p><p class="address">Address</p><p class="hidden"></p></li>');

请注意,在最右边我有一个 &lt;p&gt; 元素和 hidden 类。我用它来获取我不想显示给我的用户的 id

这是 jQuery 来生成那些 &lt;li&gt; 上的数据:

$(".box").each(function () {
    var name, address, picture, id = "";
    if (i < result.length) {
        name = result[i].name;
        address = result[i].address;
        picture = result[i].boxpicture;
        id = result[i].mallid;
    }

    $(this).find(".name").html(name);
    $(this).find(".address").html(address);
    $(this).find(".picture").attr("src", picture);
    $(this).find(".hidden").html(id);
    i++;
});

我已尝试检查数据,并且工作正常。

现在,假设我想在用户点击我上面生成的&lt;li class="box"&gt; 之一时提醒隐藏的id &lt;p&gt;

$(".box").click(function () {
    alert(document.getElementsByClassName('hidden').innerHTML);
});

但此警报始终返回“未定义”。

【问题讨论】:

  • 只是出于好奇。你为什么使用纯 JavaScript 和 jQuery?
  • @putvande err..sorry 那是因为我是初学者...我会尝试只使用 jQuery :D

标签: javascript jquery html


【解决方案1】:

document.getElementsByClassName() 返回一个节点列表,而不是一个元素!

应该是这样的:

document.getElementsByClassName('hidden')[0].innerHTML

因为您可能有更多 .hidden 元素,并且只想要当前 .box 中的一个(在事件处理程序中将是 this

this.getElementsByClassName('hidden')[0].innerHTML

但为什么不是 jQuery

$(".box").click(function(){
        alert( $('.hidden', this).html() );
});

【讨论】:

  • 非常感谢您的帮助 :D 是的,我会尝试只使用 jQuery :D 所以如果我只想使用 jQuery,我还需要更改 "$(this).find(" .name").html(name);"到“$('.name', this).html();”对吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 2019-05-21
  • 2015-09-08
  • 1970-01-01
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多