我有一个html页面,其中html呈现为:
<div id = 'mViB'>
<table id = 'myTable'>
<tbody>
<tr> ...</tr>
<tr>...</tr>
<tr> ...</tr>
<tr>....</tr>
<tr>
<td>
<label id="*spaM4" for="*zigField4">
All hell.
<span class = 'msde32'></span>
</label>
</td>
</tr>
</tbody>
</table>
</div>
现在我要做的是获取标签文字'All hell。'来自标签。
出于这个目的,我使用了document.getElementById('*spaM4').text
和document.getElementById('*spaM4').value
,但顺便一提,它们都没有用。
我使用了document.getElementById('*spaM4').innerHTML
,但也返回了span class
,但我只想获取文字。
不幸的是,元素ID中的星号是第三方代码,我无法更改它。
任何人都可以建议任何其他方式来获取标签文本吗?
答案 0 :(得分:31)
试试这个:
document.getElementById('*spaM4').textContent
如果您需要定位&lt; IE9然后你需要使用.innerText
答案 1 :(得分:11)
这将在普通的JS中获得你想要的东西。
var el = document.getElementById('*spaM4');
text = (el.innerText || el.textContent);
<强> FIDDLE 强>
答案 2 :(得分:4)
使用innerText
/ textContent
:
var el = document.getElementById('*spaM4');
console.log(el.innerText || el.textContent);
答案 3 :(得分:2)
您可以使用textContent属性从标签中检索数据。
<script>
var datas = document.getElementById("excel-data-div").textContent;
</script>
<label id="excel-data-div" style="display: none;">
Sample text
</label>
答案 4 :(得分:1)
从<label>
元素获取文本值的最佳方法如下:
如果你经常获得元素ID,最好有一个函数来返回id:
function id(e){return document.getElementById(e)}
假设以下结构:
<label for='phone'>Phone number</label>
<input type='text' id='phone' placeholder='Mobile or landline numbers...'>
此代码将从<label>:
var text = id('phone').previousElementSibling.innerHTML;
此代码适用于所有浏览器,您无需为每个<label>
元素提供唯一ID。
答案 5 :(得分:1)
对于数据元素位于标签内的情况,如本例所示:
<label for="subscription">Subscription period
<select id='subscription' name='subscription'>
<option></option>
<option>1 year</option>
<option>2 years</option>
<option>3 years</option>
</select>
</label>
所有先前的答案将给出意外的结果:
"Subscription period 1 year 2 years 3 years "
预期结果为:
"Subscription period"
因此,正确的解决方案将如下所示:
const label = document.getElementById('yourLableId');
const labelText = Array.prototype.filter
.call(label.childNodes, x => x.nodeName === "#text")
.map(x => x.textContent)
.join(" ")
.trim();
答案 6 :(得分:0)
var lbltext = document.getElementById('*spaM4').innerHTML