2012-04-27 41 views
11

我有一個被定義爲一個按鈕,如下:的Javascript獲得自定義按鈕的文本價值

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

,我想基於文本值抓住它,但是,沒有它的屬性包含文本值。它的外觀非常自定義。

有沒有人知道的方式來尋找這個價值的編程方式,除了只是通過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); 
     } 
    } 
} 
}; 

,只回來了在代碼中定義的三個屬性。

innerHTML,text和textContent全部返回爲null。

+0

「文本值」*是* html文本;這就是所有你可以做到的,因爲這是它存在於DOM中的唯一地方。 *編輯*等待;你想從按鈕中獲取文本,還是要根據其內容找到*按鈕?你的問題的題目和第一句話的衝突的措辭; 「獲取自定義按鈕的文本值」與「我試圖根據文本值獲取它」。那些意味着不同的東西 – Pointy 2012-04-27 13:39:01

+0

你是否想要找到一個按鈕的內容'按鈕文本在這裏',並做了一些什麼? – 2012-04-27 13:40:03

+0

@Pointy - 是的,最終我試圖根據標籤之間的文本值來獲取按鈕本身的鉤子。 'textContent'和innerHTML都返回爲null。 :( – hacket 2012-04-27 13:43:23

回答

10

如果你想找到按鈕完全由它的文本內容,我會抓住一個所有按鈕的列表,並通過它們循環找到這一個:

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

當然,如果這個按鈕的內容有一點變化,你的代碼將需要更新。

+0

這與我最終實現的內容非常接近,根本無法使用任何屬性選擇該按鈕。 – hacket 2012-04-27 19:00:02

12

您可以通過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()); 
+0

感謝解決方案,但是,我更新了以反映ID和jquery不適合我的情況 – hacket 2012-04-27 13:51:01