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= に対して機能しませんでした。

このDOMのものは初めてです。

4

6 に答える 6

2

あなたはこれを使うことができます:

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

querySelectorAllに関するMDNのドキュメントを参照してください。

これはIE7では機能しないことに注意してください。この種のことをクロスブラウザ方式でより簡単に行うには、jQueryなどの一般的なDOM操作ライブラリの1つを使用できます。


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

プレーンな JavaScript を使用して、要素の順序が少し変更された場合にコードをより堅牢にすると、id とクラスの両方を使用して次のように取得できます。

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

またはタグ名を使用すると、次のようになります。

var text = document.getElementById('userMenu').getElementsByTagName("li")[0].innerHTML;
于 2013-02-27T19:11:37.643 に答える
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 に答える
0

これが明らかな場合は申し訳ありませんが...一般的に言って、要素にアクセスしようとする場合は、最初にそれらにIDを指定すると、多くの時間を節約できます。

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

そしてもちろん

document.getElementById('ug0').innerHTML; 
于 2013-02-28T04:52:05.390 に答える
0

jQuery はこれをより簡単にします。次のようなことができます

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