如果您在IE7和Firefox上运行此脚本http://jsfiddle.net/y8jp8/2/,您可以看到: 结果不一样。
我只想看到3个属性(id,title和myattr)及其值。我怎么能在IE中做到这一点?
答案 0 :(得分:2)
这是对roXon答案的修正,但仍然没有完美的解决方案..
var result = "";
var attrs = $("#sample")[0].attributes;
for(var i=0;i<attrs.length;i++) {
if(attrs[i].nodeValue != null
&& attrs[i].nodeValue != ''
&& attrs[i].nodeValue != 'inherit'){
result += ( attrs[i].nodeName + "=" + attrs[i].nodeValue + "<br>");
}
$('#log').html(result);
}
http://jsfiddle.net/digitaloutback/pMVJw/9/
<强>更新强>
IE7似乎没有过滤掉未指定的属性,例如,这是示例中“sample”属性的数据:
parentNode => null
nodeValue => sample
firstChild => null
name => id
expando => false
lastChild => null
ownerDocument => [object]
attributes => null
previousSibling => null
value => sample
nodeType => 2
nodeName => id
childNodes => null
nextSibling => null
specified => true
ownerElement => undefined
因此,您需要针对'指定'进行测试,如:
var result = "";
var attrs = $("#sample")[0].attributes;
for(var i=0;i<attrs.length;i++) {
if(attrs[i].specified == true ) {
result += ( attrs[i].nodeName + "=" + attrs[i].nodeValue + "<br>");
}
$('#log').html(result);
}
答案 1 :(得分:1)
您是否有任何理由不能获得所需的三个显式值而不是迭代所有属性?这在IE7和Chrome中获得了相同的结果。
var result = "";
result += 'id=' + $('#sample').attr('id') + '<br />';
result += 'title=' + $('#sample').attr('title') + '<br />';
result += 'myattr=' + $('#sample').attr('myattr') + '<br />';
$("#log").html( result );