Javascript 使用alt文本查找图像标记
我想知道是否可以使用Javascript通过其alt文本来查找图像标记。例如,我有这样一个标签:Javascript 使用alt文本查找图像标记,javascript,image,attributes,tags,Javascript,Image,Attributes,Tags,我想知道是否可以使用Javascript通过其alt文本来查找图像标记。例如,我有这样一个标签:有没有办法通过查找“Myimage”alt属性来获取标签?毫无疑问,很快就会发布jQuery解决方案。要做到这一点,请执行以下操作: function getImagesByAlt(alt) { var allImages = document.getElementsByTagName("img"); var images = []; for (var i = 0, len =
有没有办法通过查找“Myimage”alt属性来获取标签?毫无疑问,很快就会发布jQuery解决方案。要做到这一点,请执行以下操作:
function getImagesByAlt(alt) {
var allImages = document.getElementsByTagName("img");
var images = [];
for (var i = 0, len = allImages.length; i < len; ++i) {
if (allImages[i].alt == alt) {
images.push(allImages[i]);
}
}
return images;
}
var myImage = getImagesByAlt("Myimage")[0];
函数getImagesYalt(alt){
var allImages=document.getElementsByTagName(“img”);
var图像=[];
对于(变量i=0,len=allImages.length;i但是,使用图像标记的id属性会更容易,性能也会更高。如果节点列表实现了Iterable,这就不难了。这个实现将过滤器放入NodeList的原型中,这可能不符合每个人的口味,但我更喜欢简洁地访问我的数据结构
<html>
<head>
<script type="text/javascript">
// unfortunately NodeLists do not have many of the nice Iterate functions
// on them, here is an incomplete filter implementation
NodeList.prototype.filter = function(testFn) {
var array = [] ;
for (var cnt = 0 ; cnt < this.length ; cnt++) {
if (testFn(this[cnt])) array.push(this[cnt]) ;
}
return array ;
}
// loops through the img tags and finds returns true for elements that
// match the alt text
function findByAlt(altText) {
var imgs = document.getElementsByTagName('img').filter(function(x) {
return x.alt === altText ;
}) ;
return imgs ;
}
// start the whole thing
function load() {
var images = findByAlt('sometext') ;
images.forEach(function(x) {
alert(x.alt) ;
}) ;
}
</script>
</head>
<body onload="load()">
<img src="./img1.png" alt="sometext"/>
<img src="./img2.png" alt="sometext"/>
<img src="./img3.png" alt="someothertext"/>
</body>
</html>
//不幸的是,节点列表没有很多好的迭代函数
//在它们上面,有一个不完整的过滤器实现
NodeList.prototype.filter=函数(testFn){
var数组=[];
对于(var cnt=0;cnt
我看到您正在使用alt文本查找图像标记。你应该完全放弃它,使用jQuery!更好的问题是,您是否使用JS库?(jquery、prototype、mootols、yui..)注意,你会得到一个数组,因为DOM规范中没有关于唯一alt标记的内容。不幸的是,NodeList
的扩展排除了IE(至少在版本7之前,包括版本7,我手头没有8个要测试)。啊,幸运/不幸的是,我在一个没有IE的世界中工作。IE作为getElementsByTagName的返回呈现了什么?我相信它是某种节点列表
,但无法直接访问节点列表
构造函数。啊,对,非常感谢:)/me去阅读jquerysource正确的答案是var-imgElement=document.querySelector('img[alt=“MyImage”]”)
。querySelector中的文本需要加引号。如果没有,控制台会显示“未捕获引用错误:未定义img”
<html>
<head>
<script type="text/javascript">
// unfortunately NodeLists do not have many of the nice Iterate functions
// on them, here is an incomplete filter implementation
NodeList.prototype.filter = function(testFn) {
var array = [] ;
for (var cnt = 0 ; cnt < this.length ; cnt++) {
if (testFn(this[cnt])) array.push(this[cnt]) ;
}
return array ;
}
// loops through the img tags and finds returns true for elements that
// match the alt text
function findByAlt(altText) {
var imgs = document.getElementsByTagName('img').filter(function(x) {
return x.alt === altText ;
}) ;
return imgs ;
}
// start the whole thing
function load() {
var images = findByAlt('sometext') ;
images.forEach(function(x) {
alert(x.alt) ;
}) ;
}
</script>
</head>
<body onload="load()">
<img src="./img1.png" alt="sometext"/>
<img src="./img2.png" alt="sometext"/>
<img src="./img3.png" alt="someothertext"/>
</body>
</html>
var imgElement = document.querySelector(img[alt="MyImage"])