JavaScript中有一些方法可以使用ID,Class和Tag来获取HTML元素。
document.getElementByID(*id*);
document.getElementsByClassName(*class*);
document.getElementsByTagName(*tag*);
是否有任何方法可根据属性名称获取元素。
EX:
<span property="v:name">Basil Grilled Tomatoes and Onions</span>
像:
document.getElementsByAttributeName("property");
答案 0 :(得分:68)
是的,但并非在所有浏览器中都存在。旧版本的Internet Explorer(即版本8之前)不支持它。该函数为querySelectorAll
(或单个元素的querySelector
),允许您使用CSS选择器查找元素。
document.querySelectorAll('[property]'); // All with attribute named "property"
document.querySelectorAll('[property=value]'); // All with "property" set to "value" exactly.
(Complete list of attribute selectors on MDN.)
这将查找具有attribute属性的所有元素。如果可能的话,最好指定标签名称:
document.querySelectorAll('span[property]');
如果需要,您可以通过循环浏览页面上的所有元素来查看它们是否具有属性集:
var withProperty = [],
els = document.getElementsByTagName('span'), // or '*' for all types of element
i = 0;
for (i = 0; i < els.length; i++) {
if (els[i].hasAttribute('property')) {
withProperty.push(els[i]);
}
}
像jQuery这样的库可以为你处理这个问题:让他们做繁重的工作可能是个好主意。
答案 1 :(得分:2)
在jQuery中就是这样:
$("span['property'=v:name]"); // for selecting your span element
答案 2 :(得分:1)
只是另一个答案
Array.prototype.filter.call(
document.getElementsByTagName('span'),
function(el) {return el.getAttribute('property') == 'v.name';}
);
将来
Array.prototype.filter.call(
document.getElementsByTagName('span'),
(el) => el.getAttribute('property') == 'v.name'
)
答案 3 :(得分:1)
您可以使用char *a = (char *)&x;
:
querySelectorAll
答案 4 :(得分:0)
我想你想看一下jQuery,因为Javascript库提供了许多你可能想要在这种情况下使用的功能。在你的情况下,你可以写一个(或在互联网上找到一个)hasAttribute方法,就像这样(未经测试):
$.fn.hasAttribute = function(tagName, attrName){
var result = [];
$.each($(tagName), function(index, value) {
var attr = $(this).attr(attrName);
if (typeof attr !== 'undefined' && attr !== false)
result.push($(this));
});
return result;
}
答案 5 :(得分:-1)
您可以使用javascript获取属性,
element.getAttribute(attributeName);
例如:
var wrap = document.getElementById("wrap");
var myattr = wrap.getAttribute("title");
参见:
答案 6 :(得分:-1)
使用 prototypejs :
$$('span[property=v.name]');
或
document.body.select('span[property=v.name]');
两者都会返回数组