1

我有一段时间从我想要的 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');  

我可以取回“某些东西”(尽管这一切都在门户中,因此将 java 脚本断点放入其中非常困难)。所以我不确定如何进一步获取字符串"I WANT THIS TEXT HERE "

我想我必须遍历 childNodes 但不确定我究竟是如何返回或返回什么以便我可以得到那个字符串,getElementById 也不适用于 class= 那会是 getElementByClass 吗?

这个 DOM 东西的新手。

4

6 回答 6

2

你可以使用这个:

var text = document.querySelectorAll('#userMenu li.userGreet.devi')[0].innerHTML;

请参阅MDN 的 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();
于 2013-02-27T18:32:26.087 回答
2

试试这个...

document.getElementById('userMenu').children[0].innerHTML
于 2013-02-27T18:34:04.000 回答
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);
于 2013-02-27T18:35:25.757 回答
1

如果元素的顺序发生了一点变化,则使用纯 javascript 并使您的代码更加健壮,您可以同时使用 id 和 class 来获得它,如下所示:

var text = document.getElementById('userMenu').getElementsByClassName("userGreet")[0].innerHTML;

或使用标签名称,可以这样做:

var text = document.getElementById('userMenu').getElementsByTagName("li")[0].innerHTML;
于 2013-02-27T19:11:37.643 回答
0

jQuery 将使这更容易。你可以做类似的事情

var text = $('#userMenu .userGreet.devi').text();
于 2013-02-27T18:34:05.847 回答
0

很抱歉,如果这很明显,但是...一般来说,如果您要尝试访问元素,请在一开始就给它们 ID,这将为您节省大量时间。

<li id="ug0" class="userGreet devi">...</li>

那么当然

document.getElementById('ug0').innerHTML; 
于 2013-02-28T04:52:05.390 回答