Javascript 根据标题标记自身的现有内容替换其内容

Javascript 根据标题标记自身的现有内容替换其内容,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,我有一个预先存在的html块,我需要使用jQuery修改它。HTML如下所示: <div class="main"> <div class="wms-column wms-column-nav"> <div class="wms-column-nav-body"> <div class="section"> <h3>Recent News</h3>

我有一个预先存在的html块,我需要使用jQuery修改它。HTML如下所示:

<div class="main">
    <div class="wms-column wms-column-nav">
        <div class="wms-column-nav-body">
        <div class="section">
            <h3>Recent News</h3>
            <ul class="other">
            <li>Something</li>
            </ul>
        </div>
        </div>
    </div>
</div>​

近期新闻
  • 某物
我需要针对H3并更改其内部文本。然而,由于没有ID,用选择器来定位它是很棘手的。有许多其他H3标签通过他们的网站,不能改变,但有相同的选择器路径。我如何根据H3的内容确定其目标,然后对其进行更改?我更喜欢插入html而不是文本的方法,因为将使用一些特殊字符


谢谢

在香草Javascript中:

var elements = document.getElementsByTagName('h3');
for (var i=elements.length; i-->0; ) {
    var element = elements[i];
    var text = element.textContent || element.innerText;
    if (text=='Recent News') {
       element.innerHTML = 'some new text';   
    }
}
使用jQuery:

$('h3')
将选择所有标题标记。您可以单独处理它们:
$('h3')。等式(0)
$('h3')。等式(1)

您还可以轻松地通过它们进行循环:

$('h3').each(function() {
     alert(this.text()) <-- "this" will point to the current item in the loop.
})
$('h3')。每个(函数(){

警报(this.text())您只需选择所有h3标记,然后遍历它们并检查它们的内容

我将使用以下方法:

var h3Tags = document.getElementsByTagName('h3');
for (var x=0; x<h3Tags.length; x++) {
   if (h3Tags[x].innerText=='Recent News') {
      h3Tags[x].innerHTML = 'New Content';
   }
}
var h3Tags=document.getElementsByTagName('h3');

for(var x=0;xLooks很好。如果一个页面有很多很多H3标签,这会有点多吗?这不会有问题,只要你不每隔几毫秒做一次。如果你对性能着迷,我只更改了一次调用长度(这不是一个数组,而是一个动态集合,因此获取长度并不完全是即时的。如果您确定只有一个元素需要更改,则在找到它时可能会中断。但不要过度优化:这很快。