如何更改具有空替换文字的图像的替代文字

时间:2014-01-09 08:13:54

标签: javascript jquery

我的内部有一个div,它的智慧可以是图像的数量 我想要做的是,如果有任何img与alt =“”我想要将其更改为alt =“category” 我怎么能用jquery做到这一点。 目前我能够获得所有的img元素并尝试首先检查那里的值[如果有一个alt有价值我将不会触及它]但是不成功 我目前的代码是

var label = $("#viewCategoriesForBlog").find('img').attr('alt');
for(var i=0;i<label.length;i++){
    alert( label[i].value);
}

7 个答案:

答案 0 :(得分:1)

var label = $("#viewCategoriesForBlog").find('img').attr('alt'); 
// label will hold only the first alt value

必须像

var label = $("#viewCategoriesForBlog").find('img');
for(var i=0;i<label.length;i++){
    alert( $(label[i]).attr('alt'));
}

答案 1 :(得分:1)

此操作将解决您的初始问题:

 $('#viewCategoriesForBlog img[alt=""]').attr('alt', 'category');

答案 2 :(得分:1)

像这样:

$("#viewCategoriesForBlog img[alt=''], #viewCategoriesForBlog img:not([alt])")
    .attr("alt", "Category");

选择者解释说:

  • #viewCategoriesForBlog img[alt=""]返回包含alt=""
  • 的img标记
  • #viewCategoriesForBlog img:not([alt])返回没有alt属性
  • 的img标记

Demo here

答案 3 :(得分:0)

您需要遍历选择器中的元素。您不能在选择器中循环元素的属性。试试这个:

$("#viewCategoriesForBlog img").each(function(i, el) {
    alert($(el).prop('alt'));
});

答案 4 :(得分:0)

尝试这样的事情

  $("#viewCategoriesForBlog").find('img').each(function(){
        if(this.alt.trim() == ''){
            this.alt = 'category';
        }
  })

答案 5 :(得分:0)

这个小提琴警告所有空的alt标签: http://jsfiddle.net/4ZnJN/1/

$("img").each(function(){
        var label = $(this).attr('alt');            
        if(label.length < 1){
            alert(label);
        }
});

可能希望将其缩小到您的特定结构而不是所有img标签

答案 6 :(得分:0)

我知道绝对无法访问,但在这里我只需要避免WCAG验证器突出显示没有替代文本的图像。

var images = document.querySelectorAll('img');

if(images) {
    for (var i = images.length - 1; i >= 0; i--) {
        var alt = images[i].getAttribute('alt');
        if(!alt){
            images[i].setAttribute('alt', 'no alt text');
        }
    }
}