2016-05-18 45 views
1

目前,我有一塊java腳本,它會生成一個單元格表,其中每個單元格都有一個有序的數字列表,一個標籤和一個文本框。這段代碼片段如下:訪問文本標籤值Javascript

<table id="drawAllQuestionsTbl"> 
<tbody><tr><td class="tbl"> 
<ol start="1"> 
<li>Sport 1:&nbsp;<input type="text" name="tq_g_0_guess" size="15"></li></ol></td></tr><tr><td class="tbl"> 

爲簡潔起見,我削減了很多額外的東西。實際上,這個表格大約有10個這個單元格的副本,每個單元格都有一個帶有標籤和文本框的有序列表。例如,對於此有序列表中的文本框,我可以使用document.getElementsByName("tq_g_0_guess")成功訪問其值。但是,我的問題是如何獲得此文本框旁邊的標籤「Sport 1」的價值。有任何想法嗎?

+0

待辦事項你可以控制輸出的HTML嗎?如果它在一個實際的'label'標籤中,那麼它會容易得多。 – Seth

+0

我希望,但不幸的是我沒有。我正試圖從網頁上去除這些內容。 – user1939991

+0

您擔心哪些版本的IE? – Seth

回答

2

以下將給出li節點的文字。這將是Sport 1:

var elParent = document.getElementsByName("tq_g_0_guess")[0].parentNode; 
var labelText = elParent.innerText; 
console.log(labelText); // Sport 1: 

您可以利用labelText進一步將文本格式化爲所需的結果。

如果Sport 1,那麼你可以將一切都串起來結腸

labelText.substr(0, labelText.indexOf(':')); 
+0

工程出色!非常感激。 – user1939991

1

什麼:

document.getElementsByName("tq_g_0_guess")[0].parentNode.innerText 
+0

謝謝你的回答! – user1939991

+0

當然,祝你好運。 – Collin

1

寫在JavaScript:

var child = document.getElementsByName("tq_g_0_guess")[0]; // ok, must add a [0] after this. 
var preTextNode = child.previousSibling; 
var textContent = preTextNode.textContent; // this is the text you want. 
+0

這不起作用...'child'返回一個nodeList。因此,您必須定位該節點列表中的項目。 – Seth

+0

謝謝,我很少使用getElementsByName,所以我把它作爲getElementById。 –

+0

是的,它不再經常使用。但是,通常方法名稱會提示返回的值。 'getElement ...'vs'getElements ...'或'querySelector' vs'querySelectorAll' – Seth