我有一个范围:
<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>
我在这里做错了什么?
答案 0 :(得分:3)
这一行是一个问题:
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>
的变化:
getElementsByClassName
innerHTML
上操作。注意:
getElementsByClassName
,所以你要确保你正在加载一个在IE上提供它的脚本。在上面的实例中没有提供,使用Firefox,Chrome或Opera。 (只需搜索“getElementsByClassName for IE”,您就会找到几种可供选择的实现。)script
代码需要放在您要在HTML文件中处理的所有元素之后。答案 1 :(得分:1)
应该是,(例如)
document.getElementsByClassName('attr-value')[0];
答案 2 :(得分:1)
class="attr attr-value"
你正在打电话
document.getElementsByClass('attr-value').innerHTML
document.getElementsByClassName()
;