javascript - 用图像替换文本 - JavaScript (getElementsByClass)

标签 javascript replace getelementsbyclassname

我有一个跨度:

<span class="attr attr-value">Brand Name</span>

我想根据文本用图像替换该文本

这是我所拥有的:

<script type="text/javascript">
 var oldHTML = document.getElementsByClass('attr-value').innerHTML;
 var filename = oldHTML.toLowerCase().replace(/ /g, '-').replace(/([^0-9a-z-])/g,'');
 var newHTML = "<img src='http://www.example.com/" + filename + ".jpg'>";
 document.getElementsByClass('attr-value').innerHTML = newHTML;
</script>

我在这里做错了什么?

最佳答案

这一行是一个问题:

var oldHTML = document.getElementsByClass('attr-value').innerHTML;

document.getElementsByClass 应该是 document.getElementsByClassName,它返回一个 NodeList,它没有 innerHTML 属性。您需要循环遍历 NodeList 以查看每个元素的 innerHTML

类似这样的东西( live example ):

<script type="text/javascript">
(function() {
    var list, index, element, filename;
    list = document.getElementsByClassName('attr-value');
    for (index = 0; index < list.length; ++index) {
        element = list[index];
        filename = element.innerHTML.toLowerCase().replace(/ /g, '-').replace(/([^0-9a-z-])/g,'');
        element.innerHTML = "<img src='http://www.example.com/" + filename + ".jpg'>";
    }
})();
</script>

变化:

  1. 将整个内容放入匿名函数中并立即执行该函数,以避免创建全局符号。
  2. 使用正确的getElementsByClassName
  3. 循环它们
  4. 对每个元素的 innerHTML 进行操作。

注释:

  • IE 没有 getElementsByClassName,因此您需要确保加载在 IE 上提供该功能的脚本。上面的实际示例中没有提供这一点,请使用 Firefox、Chrome 或 Opera。 (只需搜索“getElementsByClassName for IE”,您就会发现多种实现可供选择。)
  • 上面的 script 标签需要放置在 HTML 文件中您要处理的所有元素之后。

关于javascript - 用图像替换文本 - JavaScript (getElementsByClass),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4487455/

相关文章:

javascript - 让计算值等待 Vue.js 中的异步数据的可满足方法是什么?

R:用多个值替换向量的一个值

Java 无法替换后跟的字符串\n

javascript - 具有相同类的许多 DIV 的不同/增加 CSS 值

javascript - PhantomJS queryselector().textcontent 不返回任何内容

javascript - JS CANVAS - 到达目标位置时圆圈速度减慢

javascript - jQuery - 将数据从 jQuery 函数传递到特定的 div?

javascript - 如何ajax从模态表单结果插入值?

hadoop - 替换HIVE表中的字符串和整数值

javascript - 按类名对 onclick 上的项目进行计数