30

我有一个 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').textdocument.getElementById('*spaM4').value

我用过document.getElementById('*spaM4').innerHTML ,但也返回了span class,但我只想获取文本。

不幸的是,元素 ID 中的星号是第 3 方代码,我无法更改它。

任何人都可以建议任何其他方式来获取标签文本吗?

4

7 回答 7

46

尝试这个:

document.getElementById('*spaM4').textContent

如果您需要定位 < IE9 那么您需要使用.innerText

于 2013-07-30T09:26:09.333 回答
17

这将在纯 JS 中得到你想要的。

var el = document.getElementById('*spaM4');
text = (el.innerText || el.textContent);

小提琴

于 2013-07-30T09:24:34.883 回答
6

使用innerText/ textContent

  var el = document.getElementById('*spaM4');
  console.log(el.innerText || el.textContent);

小提琴:http: //jsfiddle.net/NeTgC/2/

于 2013-07-30T09:23:45.307 回答
5

您可以使用 textContent 属性从标签中检索数据。

 <script>
       var datas = document.getElementById("excel-data-div").textContent;
    </script>


<label id="excel-data-div" style="display: none;">
     Sample text
</label>
于 2018-07-04T08:58:58.667 回答
4

从元素中获取文本值的最佳方法<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。

于 2017-11-29T05:56:28.943 回答
3

对于数据元素位于标签内的情况,如本例所示:

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

之前的所有答案都会给出意想不到的结果

“订阅期


                    1年
                    2年
                    3年

            "

虽然预期的结果是:

“订阅期”

所以,正确的解决方案是这样的:

const label = document.getElementById('yourLableId');
const labelText = Array.prototype.filter
    .call(label.childNodes, x => x.nodeName === "#text")
    .map(x => x.textContent)
    .join(" ")
    .trim();
于 2019-02-18T17:58:50.210 回答
2
var lbltext = document.getElementById('*spaM4').innerHTML
于 2013-07-30T09:24:37.780 回答