我有一段时间从我想要的dom中获取一些数据。
我在这里有一些HTML:
<ul id="userMenu">
<li class="userGreet devi">I WANT THIS TEXT HERE </li><li> <a href="javascript:void(0)" class="more" title="Menu">Menu</a>
<ul> ....
<li class="home">
</li>
</ul>
...</li>
</ul>
我知道如果我说
var x = document.getElementById('userMenu');
我可以得到&#34;某事&#34;回来(虽然这都是在门户网站中,所以将java脚本断点放入其中非常困难)。所以我不确定如何进一步获取字符串"I WANT THIS TEXT HERE "
?
我想我必须遍历childNodes,但不确定我是如何或者究竟是什么回来所以我可以得到那个字符串,getElementById也没有为class工作=将是getElementByClass吗?
这个DOM的新东西。
答案 0 :(得分:2)
您可以使用:
var text = document.querySelectorAll('#userMenu li.userGreet.devi')[0].innerHTML;
请参阅MDN's documentation of querySelectorAll。
请注意,这不适用于IE7。要以跨浏览器的方式更轻松地执行此类操作,您可以使用一个流行的DOM操作库,如jQuery。
如果您的HTML与您想要的文本不同(例如,您有标记),您可以使用它来获取解释文本:
var element = document.querySelectorAll('#userMenu li.userGreet.devi')[0];
var text = element.innerText || element.textContent;
请注意,这里的库再次帮助您处理浏览器之间的不兼容性。 Jquery会让你做到
var text = $('#userMenu li.userGreet.devi').text();
答案 1 :(得分:2)
试试这个......
document.getElementById('userMenu').children[0].innerHTML
答案 2 :(得分:1)
您可以像这样扫描
var x = document.getElementById('userMenu');
var xChilds = x.childNodes;
var requiredElement = null;
for(var i = 0; i < xChilds.length; i++) {
if(xChilds[i].className.indexOf('usergreet devi') !== -1) {
requiredElement = xChilds[i];
break;
}
}
console.log(requireElement);
答案 3 :(得分:1)
如果元素的顺序稍微改变,使用普通的javascript并使代码更健壮,你可以同时使用id和类来得到它:
var text = document.getElementById('userMenu').getElementsByClassName("userGreet")[0].innerHTML;
或使用标签名称,可以这样做:
var text = document.getElementById('userMenu').getElementsByTagName("li")[0].innerHTML;
答案 4 :(得分:0)
jQuery会让这更容易。你可以做点什么
var text = $('#userMenu .userGreet.devi').text();
答案 5 :(得分:0)
很抱歉,如果这是显而易见的,但是......一般来说,如果您打算尝试访问元素,从一开始就给它们ID,这将为您节省大量时间。
<li id="ug0" class="userGreet devi">...</li>
然后当然
document.getElementById('ug0').innerHTML;