2016-05-18 21 views
1

Derzeit habe ich ein Stück Java-Skript, das eine Tabelle von Zellen erstellt, wobei jede Zelle eine geordnete Liste ihrer Nummer, eine Beschriftung und ein Textfeld hat. Ein Ausschnitt dieses Codes ist unten geschrieben:Zugriff auf Text Label Value 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"> 

Der Kürze halber schnitt ich eine Menge der zusätzlichen Sachen. In Wirklichkeit ist diese Tabelle mit etwa 10 Replikaten dieser Zelle gefüllt, wobei jede Zelle eine geordnete Liste mit einem Label und einer Textbox aufweist. Für das Textfeld in dieser geordneten Liste zum Beispiel kann ich erfolgreich auf seinen Wert unter Verwendung document.getElementsByName("tq_g_0_guess") zugreifen. Meine Frage ist jedoch, wie man den Wert des Labels "Sport 1" neben diesem Textfeld erhält. Irgendwelche Ideen?

+0

Do Sie haben Kontrolle über das ausgegebene HTML? Wenn es in einem tatsächlichen "Label" -Tag wäre, wäre es viel einfacher. – Seth

+0

Ich wünschte, aber leider nicht. Ich versuche, diesen Inhalt von einer Webseite zu entfernen. – user1939991

+0

Mit welchen Versionen von IE beschäftigen Sie sich? – Seth

Antwort

2

Im Folgenden erhalten Sie den Text des li Knotens. Dies wird Sport 1: sein.

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

können Sie labelText nutzen, den Text zu dem gewünschten Ergebnis weiter zu formatieren.

Wenn Sie nurSport 1 wollen, dann können Sie das alles String bis zum Kolon

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

Funktioniert ausgezeichnet! Sehr geschätzt. – user1939991

1

Was:

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

Vielen Dank für Ihre Antwort! – user1939991

+0

Sicher, viel Glück. – Collin

1

Schreiben in 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

Das funktioniert nicht ... 'child' gibt eine nodeList zurück. Daher müssen Sie ein Element innerhalb dieser Knotenliste als Ziel auswählen. – Seth

+0

danke, ich benutze getElementsByName selten, also nehme ich es als getElementById. –

+0

Ja, es wird nicht mehr oft benutzt. Normalerweise deutet der Methodenname auf den zurückgegebenen Wert hin. 'getElement ...' vs 'getElements ...' oder 'querySelector' vs' querySelectorAll' – Seth