日期:2014-05-16  浏览次数:20473 次

纯javascript,如何用的一个自定义属性获得此对象。

       var id='123456'
  var html = "<div data-id='"+id+"' class='Board wfc wft' style='position: absolute; left: "+new_pic_x+"px; top: "+new_pic_y+"px;'><a href='#' class='link  x'><img src='http:\/\/img.hb.aicdn.com\/1b4344dca1732a9fcfbdb9f71263aaa8c8850dd834a2d-oMl40s_sq235' class='large'><div class='over '><h3>捧花的诱惑。<\/h3><h4><\/h4><div class='pin-count'>"+(pl_len+1).toString()+"<\/div></div></a><div class='FollowBoard2'><input type='checkbox' class='BoardAvatar' data-id='"+id+"'><span href='\/hiwedding\/' class='BoardUserUrl x'>花瓣婚庆<\/span><a data-id='"+id+"' href='#' class='follow btn wbtn'><strong>删除<\/strong><\/a><\/div>";


请问一下,我这个div没有id属性,有一个data_id的自定义属性。我怎么才能获取到这个对象啊

看了很多资料。都是必须有一个id属性,才能获得这个对象。

attributes:获取一个属性作为对象

getAttribute:获取某一个属性的值


var d = document.getElementById("id").attributes["data-id"];

都是类似这样的。可我的没有id属性

怎么能根据 data-id=‘123456’,直接获取到这个对象。

求大侠,大神们教育,小弟一下。
   


------解决方案--------------------
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script>

window.onload=function()
{
var aDiv=getElementByAttr('div','data-id','123456');//返回data-id为123456的div集合
for(var i=0;i<aDiv.length;i++)
aDiv[i].style.backgroundColor='#ccc';//
}
function getElementByAttr(tag,attr,value)
{
var aElements=document.getElementsByTagName(tag);
var aEle=[];
for(var i=0;i<aElements.length;i++)
{
if(aElements[i].getAttribute(attr)==value)
aEle.push( aElements[i] );
}
return aEle;
}
</script>
</head>

<body>
<div data-id="123456" class="box">测试</div>
<div data-id="123456" class="box">测试1</div>
</body>
</html>

------解决方案--------------------
没有id不是还有class么?class不支持的,不是还有tagName吗?用已有的被支持的dom操作方法,获取到更大范围的元素集合(尽量把集合控制到最小),然后到集合中去筛选寻找符合你要求的那个节点便是了。


------解决方案--------------------
var eles=getElementsByTagName("*");
for(var i=0,len=eles.length;i<len;i++){
if(eles[i].getAttribute('data_id')='xxx'){
return eles[i]
}
}
------解决方案--------------------
不好意思,手误 $('[data_id]’)