2016-05-18 2 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")を使用してその値に正常にアクセスできます。しかし、私の質問は、このテキストボックスの横にラベル "スポーツ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 ...'対 'getElements ...'または 'querySelector'対' querySelectorAll' – Seth

関連する問題