27

次のように定義されたボタンがあります。

<button type="button" id="ext-gen26" class=" x-btn-text">button text here</button>

そして、テキスト値に基づいてそれを取得しようとしています。ただし、どの属性にもテキスト値が含まれていません。それは、見た目がかなりカスタムな方法で生成されます。

HTMLテキストを調べるだけでなく、プログラムでこの値を見つける方法を知っている人はいますか? 属性以外?

もう 1 つ忘れていましたが、このボタンの ID は定期的に変更され、jQuery を使用してそれを取得すると、何らかの理由でページが壊れてしまいます。これが必要な理由について背景が必要な場合は、お知らせください。

これは私がそれをつかもうとしている JavaScript です:

var all = document.getElementsByTagName('*'); 
for (var i=0, max=all.length; i < max; i++) 
{
var elem = all[i];
if(elem.getAttribute("id") == 'ext-gen26'){
    if(elem.attributes != null){
        for (var x = 0; x < elem.attributes.length; x++) {
            var attrib = elem.attributes[x];
            alert(attrib.name + " = " + attrib.value);  
        }
    }
}
};

コードで定義されている 3 つの属性のみが返されます。

innerHTMLtext、およびtextContent- すべて として返されnullます。

4

3 に答える 3

36

textContent/innerTextプロパティ(ブラウザに依存)を介してこれを行うことができます。ブラウザが使用するプロパティに関係なく機能する例を次に示します。

var elem = document.getElementById('ext-gen26');
var txt = elem.textContent || elem.innerText;
alert(txt);

http://jsfiddle.net/ThiefMaster/EcMRT/

jQueryを使用してそれを行うこともできます。

alert($('#ext-gen26').text());
于 2012-04-27T13:39:18.450 に答える
18

テキスト コンテンツだけでボタンを見つけようとしている場合は、すべてのボタンのリストを取得し、それらをループして次のボタンを見つけます。

function findButtonbyTextContent(text) {
  var buttons = document.querySelectorAll('button');
  for (var i=0, l=buttons.length; i<l; i++) {
    if (buttons[i].firstChild.nodeValue == text)
      return buttons[i];
  }  
}

もちろん、このボタンの内容が少しでも変更された場合は、コードを更新する必要があります。

于 2012-04-27T15:42:48.000 に答える