这条线是一个问题:
var oldHTML = document.getElementsByClass('attr-value').innerHTML;
document.getElementsByClass
应该是document.getElementsByClassName
,它返回 a NodeList
,它没有innerHTML
属性。您需要循环NodeList
查看innerHTML
每个元素的 。
像这样的东西(现场示例):
<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>
变化:
- 将整个东西放在一个匿名函数中并立即执行该函数,以避免创建全局符号。
- 使用正确的
getElementsByClassName
- 遍历它们
- 对
innerHTML
每个元素进行操作。
笔记:
- IE 没有
getElementsByClassName
,因此您需要确保正在加载在 IE 上提供它的脚本。上面的示例中没有提供,请使用 Firefox、Chrome 或 Opera。(只需搜索“getElementsByClassName for IE”,您会发现有多种实现可供选择。)
- 上述
script
标签需要放置在您要在 HTML 文件中处理的所有元素之后。