Javascript получает настраиваемое текстовое значение кнопки

У меня есть кнопка, которая определяется следующим образом:

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

и я пытаюсь захватить его на основе текстового значения, однако ни один из атрибутов не содержит текстового значения. Он сформировался довольно обычным способом по внешнему виду.

Кто-нибудь знает способ найти это значение программно, помимо простого прохождения html-текста? Помимо атрибутов?

Забыл еще одну вещь, идентификатор для этой кнопки меняется регулярно, а использование 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);  
        }
    }
}
};

Он возвращается только с тремя атрибутами, которые определены в коде.

innerHTML, текст и textContent все возвращаются как null.

Ответ 1

Если вы пытаетесь найти кнопку полностью по ее текстовому контенту, я бы взял список всех кнопок и прокрутил их, чтобы найти это:

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];
  }  
}

Конечно, если содержимое этой кнопки немного изменится, ваш код нужно будет обновить.

Ответ 2

Вы можете сделать это с помощью свойств 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());