-3

如何通过getElementById获取一个id名下的元素的类名?

我尝试过了

HTML

<ul>
<li><div id="navTabs" class="tab1">1</div></li>
<li><div id="navTabs" class="tab2">2</div></li>
<li><div id="navTabs" class="tab3">1</div></li>
<li><div id="navTabs" class="tab4">2</div></li>
</ul>

Javascript

document.getElementById("navTabs").onclick = function tab_click() {
assignedTabName = document.getElementById("navTabs").className;
alert(assignedTabName);
}

它不起作用。HTML 声明对每个对象使用单独的 id 和类名。我正在尝试为每个选项卡放置一个带有一个 ID 名称和单独类名的选项卡内容框。

对象名称的HTML 语法似乎出现错误。但是,如何仅通过 javascript而不是 jquery使用相同的 id 名称和分隔类名?

4

3 回答 3

4

你不能。

getElementById返回单个元素(或者null如果没有任何匹配项)。

ID在文档中必须是唯一的。您正在尝试处理不是 HTML 的内容。

类用于将元素标记为组的成员。您似乎将它们和 ID 倒置了。


您可能可以通过使用querySelectorAll和属性选择器来破解它:

var elements = document.querySelectorAll('[id=navTabs]');

…但是您应该改正标记。

于 2013-09-08T13:40:12.220 回答
0

您不能,getElementById返回单个元素,如果不存在则返回 null。

ID 必须是唯一的。

如果您使用的是 jQuery,您可以在 parent 上收听<ul>

$('ul').on('click', 'a', function() {
    e.preventDefault(); //don't follow the link
    console.log($(this).attr('class'));
});

//编辑:我现在看到了非 jQuery部分,像@Quentin 所说的那样检查 querySelectorAll,但是你真的应该修复你的标记。

于 2013-09-08T13:42:49.837 回答
0

我猜想 javascript 仍在开发中以管理 HTML 类型语言,并且它没有提供用于管理列表菜单材料而不是现在使用 jquery 的良好功能。

于 2013-09-09T10:07:02.067 回答