获取元素的文本值的子字符串

时间:2015-12-04 15:24:30

标签: javascript string

<li id="li0" class="v1 ON"><div id="d0"><h3><a data-ltc="store-link-0" href=".?bID=2654" onclick="storeLocatorLite.showHideLi(0);return storeLocatorLite.getStoreDetails(2654, 0);"><b title="2654" class="hi">1</b>Test value<span class="distance">1.14 miles from search</span><span class="more"><i></i></span></a></h3></li>

以下JavaScript:

var list = document.getElementsByClassName("v1 ON")[0];
list.getElementsByTagName("a")[0].text

返回字符串:

  

1.test值距离搜索19.18英里

如何返回&#34;测试值&#34;?

3 个答案:

答案 0 :(得分:0)

您可以在文字周围添加范围并为其添加ID。

<a data-ltc="store-link-0" return storeLocatorLite.getStoreDetails(3430, 0);">
<b title="3430" class="hi">1</b><span id='text'>test value</span>
<span class="distance">19.18 miles from search</span><span class="more"><i></i></span></a>

通过id获取文字:

document.getElementById('text');

答案 1 :(得分:0)

a.text正在产生所有3个文本元素。

list.getElementsByTagName("a")[0].children[0].innerText

产量&#34; 1&#34;

list.getElementsByTagName("a")[0].children[1].innerText

收益&#34;距离搜索1.14英里&#34;

你希望事情在中间。

所以,你可以在中间给出你想要的文本一个小的包装元素,比如一个跨度来找到它,这样就可以了:

http://jsfiddle.net/u97xxku2/3/

答案 2 :(得分:0)

似乎就像你正在尝试只获取元素本身的文本,而不是它的任何子元素。

如果是这样,您需要查看元素childNodes并搜索文本节点。

&#13;
&#13;
var list = document.getElementsByClassName("v1 ON")[0];
var node = list.getElementsByTagName("a")[0];
var nodes = node.childNodes;

var t = "";

for (var i = 0; i < nodes.length; ++i) {
  var node = nodes[i];

  if (node.nodeType != 3) // TEXT_NODE
    continue;

  t += node.nodeValue;
}

console.log(t)     // prints "test value"
&#13;
<div class="v1 ON">
  <a data-ltc="store-link-0">
    <b title="3430" class="hi">1</b>test value
    <span class="distance">19.18 miles from search</span><span class="more"><i></i></span>
  </a>
</div>
&#13;
&#13;
&#13;

相关问题