0

说一个这样的 HTML 片段:

<div a_example = "x" b_example = "y" class = "z"></div>

在Javascript中获取a_exampleb_example的相应属性的正确方法是什么?

xpath 可以完成这项工作吗?

4

6 回答 6

3

使用getAttribute

var elem = document.getElementsByClassName("z")[0],
    a = elem.getAttribute("a_example");

这是一个工作示例

但是,正如已经提到的,您确实应该使用 HTML5data-*属性,否则您的标记是无效的。

于 2012-11-06T10:45:47.730 回答
2

一些浏览器会将所有属性添加为 DOM 元素的命名属性,而其他浏览器只会添加标准属性。在这两种情况下,您都可以使用 获取非标准属性getAttribute,但不建议使用这种方案。

通常使用标准属性和 DOM 属性,并且仅在必要时使用 getAttribute,因为它在不同浏览器中的实现不一致。

于 2012-11-06T10:47:26.143 回答
1

你应该看看 HTML5 数据属性,这里有一篇有用的文章:http ://html5doctor.com/html5-custom-data-attributes/

从标签中读取数据属性非常容易,并且可以为旧版浏览器提供回退。文章中的一个例子:

<div id="sunflower" data-leaves="47" data-plant-height="2.4m"></div>

<script>
// 'Getting' data-attributes using dataset 
var plant = document.getElementById('sunflower');
var leaves = plant.dataset.leaves; // leaves = 47;
</script>
于 2012-11-06T10:43:59.243 回答
0

如果您使用的是 jQuery,就这么简单:

HTML

<div id="testDiv" a_example = "x" b_example = "y" class = "z"></div>

Javascript:

var attr1 = $('#testDiv').attr('a_example');
于 2012-11-06T10:44:36.733 回答
0
element.getAttribute(attributename)

这应该适合你。

于 2012-11-06T10:45:55.270 回答
0

我同意您应该查看数据属性和添加非标准属性的更好方法,但这是您问题的“原始”答案,但我不会将其视为普遍支持(或建议):

    alert(document.getElementsByTagName('div')[0].getAttribute('b_example'));
于 2012-11-06T10:47:55.220 回答