javascript - 使用 JavaScript 更改 anchor 文本

标签 javascript html

示例 HTML:

<div id="video-quality" style="">
<a class="low bttn" href="">
<span>Low Quality</span>
</a>
</div>

嘿,我正在尝试使用 JavaScript 定位 anchor 标记并将其当前的“低质量”文本更改为“高质量”。

我不太了解 JavaScript,但这就是我想出的。但它显然不起作用:

var vid_id=document.getElementById('video-quality');
var anchor=vid_id.getElementsByTagName('a');
anchor.innerHTML="High Quality";

最佳答案

假设 video-quality div 只会有 一个 anchor ,你离得不远了:

var vid_id=document.getElementById('video-quality');
var anchor=vid_id.getElementsByTagName('a');
anchor[0].innerHTML="High Quality";
//    ^^^-- change here

(如果您不需要支持 IE7 和更早版本,还有更短的方法,请参阅 David's answer 了解更多信息。)

关键在名称 getElementsByTagName 中(注意复数形式)。它返回 NodeList ,不是一个元素。 NodeList 是(令人震惊的!)匹配节点的列表,在本例中匹配元素innerHTML 是单个元素的属性,因此我们必须索引到 NodeList 才能访问特定元素。上面的代码假定至少有一个匹配元素,并更新它的 HTML。如果您想更具防御性:

var vid_id=document.getElementById('video-quality');
var anchors=vid_id.getElementsByTagName('a');
if (anchors[0]) {
    anchors[0].innerHTML="High Quality";
}

这允许没有匹配 anchor 的可能性。

请注意,这样做会删除 span 元素,因为 span 是 anchor 的后代。如果您想避免这种情况,只需查找 span 元素作为 anchor 的后代,就像您在 div 中查找 anchor 一样。


FWIW,我建议使用合理的以 JavaScript 浏览器为中心的库,例如 jQuery , YUI , Closure , 或 any of several others .它们提供了很多实用功能,并消除了一些浏览器差异。但如果您更喜欢直接使用 DOM,那也很好。

关于javascript - 使用 JavaScript 更改 anchor 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13280116/

相关文章:

javascript - CSS 和 jQuery 的 ul 和 li 问题

jquery - 滚动时如何更改导航栏背景颜色?

javascript - 将 html 下拉列表选择的值从 javascript 发送到 mvc 2 中的模型数据库

javascript - 如何在点击时切换元素的innerHTML

javascript - 将日期从客户端(Javascript)发送到 WebApi 的最佳方式是什么

javascript - Highcharts:多系列柱形图中的位置散点图

javascript - HTML5 session 存储发送到服务器

javascript - 如何让文本区域中的某些字符不可编辑

javascript - JS : Create comma separated values from values of multiple inputs

javascript - 碰撞检测的问题是 JavaScript