使用document.getElementById

时间:2013-02-27 18:30:13

标签: javascript html dom

我有一段时间从我想要的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的新东西。

6 个答案:

答案 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;