如何设置<img>alt标记
How to set <img> alt tag from another piece of HTML in the same page
我有一个网站,它是在我对这项业务了解比现在更少的时候建立的。该网站包含大约200页和数千张图片。显示它们的HTML通常如下所示:
<div class="pic">
<a onclick="loadImage('filename.jpg')" href="#4"><img src="filename.jpg" alt="missing img"></a>
<div class="imgcapt"><i>Caption</i></div>
</div>
这会在页面上放置一张图片,并在下方添加标题。单击图像会在新窗口中打开图像的较大版本。大多数图片都有字幕,但并非所有图片都有。
我想做的是用imgcapt-div(存在的地方)的内容替换现有的alt文本。理想情况下,我想在源文件中这样做,但如果这不可能,那么添加一些JavaScript,在页面加载时这样做。我看过类似问题的各种答案,但找不到任何匹配的答案。有人能为我指出这两种方法的正确方向吗?
不需要jquery,您可以查看您的document.querySelector('div.imgcapt').innerHTML
。imgcapt元素´并使用element.setAttribute 设置alt标签
首先,不应该使用内联HTML事件处理程序(onclick=...
),因为它们创建了意大利面条代码,导致全局匿名函数代理修改了this
绑定,并且不遵循DOM事件标准。
其次,你根本不需要把你的图像包装在锚标签中。只需将图像的点击事件连接到您的函数即可。
所以,这样就可以了:
window.addEventListener("load", function(){
var imgs = document.querySelectorAll("img");
for(var i = 0; i < imgs.length; ++i){
imgs[i].addEventListener("click", function(){
window.location = this.getAttribute("data-path");
loadImage("fileName.jpg");
this.alt = this.nextElementSibling.firstChild.innerHTML;
alert(this.alt);
});
}
function loadImage(path){
window.open(path);
}
});
<div class="pic">
<img src="filename.jpg" alt="missing img" data-path="#4">
<div class="imgcapt"><i>Caption</i></div>
</div>
您可以尝试使用jQuery选择所有具有pic类的div
然后,对于每个匹配,在imgcapt类中获取i的文本,并将属性alt设置为
$( document ).ready(function() {
$('.pic').each(function(el) {
var imgCaption = $(this).find('i').text();
$(this).find('img').prop('alt', imgCaption);
})
});
这是一把小提琴https://jsfiddle.net/3vmd92zr/
相关文章:
- 如何更改<svg>标记为<img>用js标记
- 检索MongoDB binData并显示为<img>src
- AngularJS提取物<img>来自JSON
- 隐藏<img>在移动设备上
- 如何从<img>标记
- HTML5我可以使用<img>其中<来源>
- 做<img>或者<画布>保存对原始(大)dataUrl对象的引用
- 使用<img>Ember-cli中的src
- PHP网站:导出<表>到Excel-并剥离<img>并且<a>标签
- Picturefill.js:需要帮助转换<图片>到<img>srcset/sites方法
- 我想对<img>标签
- 如何重新加载<img/>
- 如何设置<img>alt标记
- 获取<img>src,并通过class设置为变量(id不可用)
- <img>在Firefox中src更改时闪烁
- <img>标签未显示图像
- 自定义数据属性,剪切并嵌入<img>
- 如果两个<img>彼此接触
- 强制点击<img>标记以选择包装<a>标签
- Javascript canvas.toDataUrl()将图片发送到<img>元素