我想使用 JavaScript 检测 img 标签中 src 的第一个字母,并在第一个字母与“l”不匹配时显示警报:
HTML:
<!DOCTYPE html>
<html>
<body>
<script src="imgDetect.js"></script>
<img src="l.jpg" />
<img src="a.jpg" />
</body>
</html>
Javascript:
x = document.getElementsByTagName('img').getAttribute('src');
if (x.charAt(0)!=='l'){
window.alert("message")
}
问题是 getAttribute
无法与 getElementsByTagName
一起使用。
警报将显示 getElementsByTagName
是否替换为 getElementById
(仅用于检测单个元素),
我希望它适用于 getElementsByTagName
最佳答案
这是因为 getElementsByTagName 返回一个 NodeList 对象,该对象是一个引用多个元素的类似数组的对象。
因此 document.getElementsByTagName('img')
没有名为 getAttribute
的方法,调用该方法将导致错误。相反,您需要遍历列表并测试每个元素
x = document.getElementsByTagName('img');
for (var i = 0; i < x.length; i++) {
if (x[i].getAttribute('src').charAt(0) !== 'l') {
window.alert("message")
}
}
演示:Fiddle
<小时/>此外,在您的脚本中,您已将脚本包含在页眉中,执行该脚本时,页面正文尚未加载,因此 document.getElementsByTagName('img')
不会' t 返回任何元素。
您可以使用窗口的加载方法来执行脚本或将脚本移动到页面底部
使用onload
window.onload = function () {
//this part of the script will be executed after the document is loaded completely
var x = document.getElementsByTagName('img');
for (var i = 0; i < x.length; i++) {
if (x[i].getAttribute('src').charAt(0) !== 'l') {
window.alert("message")
}
}
}
底部脚本
<img src="l.jpg" />
<img src="a.jpg" />
<script src="imgDetect.js"></script>
关于Javascript - getAttribute 不适用于 getElementsByTagName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29935464/