Javascript获取自定义按钮的文本值

hac*_*ket 21 html javascript

我有一个按钮,定义如下:

<button type="button" id="ext-gen26" class=" x-btn-text">button text here</button>
Run Code Online (Sandbox Code Playgroud)

我试图根据文本值抓取它,但是,它的属性都没有包含文本值.它的外观以一种非常自定义的方式生成.

有没有人知道以编程方式找到这个值的方法,除了通过html文本?属性除外?

忘了另一件事,这个按钮的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);  
        }
    }
}
};
Run Code Online (Sandbox Code Playgroud)

它只返回代码中定义的三个属性.

innerHTML,text和textContent都返回null.

Thi*_*ter 26

您可以通过textContent/ innerTextproperties(依赖于浏​​览器)来实现.这是一个无论浏览器使用哪个属性都可以使用的示例:

var elem = document.getElementById('ext-gen26');
var txt = elem.textContent || elem.innerText;
alert(txt);
Run Code Online (Sandbox Code Playgroud)

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

你也可以使用jQuery来做到这一点:

alert($('#ext-gen26').text());
Run Code Online (Sandbox Code Playgroud)


Ric*_*her 15

如果你试图完全按照文本内容找到按钮,我会抓住所有按钮的列表并循环浏览它们以找到这个按钮:

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];
  }  
}
Run Code Online (Sandbox Code Playgroud)

当然,如果此按钮的内容变化甚至一点,您的代码将需要更新.