2016-05-18 62 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