似乎没有得到$()。attr(' src')来完成它的工作

时间:2017-03-09 15:23:06

标签: javascript jquery html css

首先发布这里,所以请温柔; - )

我过去几周一直在学习编写虚拟页面的编码,并且随着我的进步逐步实现我在其上学到的东西,因此它是一个混合包,功能/代码是根据我写的时间,基于纯html / CSS,内联javascript,外部javascript,最后是jquery。

所以我大部分都把它包起来,我现在正在清理乱七八糟的东西,我的任务之一就是剔除功能和代码行,其中一个我被卡住了。

之前是30个按钮调用30个不同的功能,如下所示:

function cell3() {

         document.getElementById('base3').src='images/1/3/' + x + '.png';
         document.getElementById('base3b').src='images/1/3/' + x + '.png';
         document.getElementById('v2base3').src='images/2/3/' + x + '.png';
         document.getElementById('v2base3b').src='images/2/3/' + x + '.png';
         document.getElementById('cell3').style.backgroundColor= x ;
}   

全局变量(x)定义图像的文件夹路径,以便在单击按钮(cell3)时替换某些div中的图像。它还会改变它的bGroung颜色。对不起,如果命名有点令人困惑......

所以我用这个jquery删除所有30个函数和30个onclick调用:

$('button').click(function(){

  var eyeD = $(this).attr("id"); 
  var newURLa = 'images/1/' + eyeD + '/' + x + '.png';
  var newURLb = 'images/2/' + eyeD + '/' + x + '.png';

    $('base' + eyeD).attr('src', newURLa);
    $('base' + eyeD + 'b').attr('src', newURLa);
    $('v2base' + eyeD).attr('src', newURLb);
    $('v2base' + eyeD + 'b').attr('src', newURLb);
    $(this).css( "background-color", x );
    document.getElementsByid('check').innerhtml = eyeD;

});

为此工作'我将按钮的名称从' cell1',' cell2等更改为' 1',' 2'等。

现在的问题是,当点击按钮时,var' eyeD'从按钮确定值。 (' 1',' 2'等)。元素ID正确形成(' base1',' base2' ...' base1b',base2b' ...), URL正确形成。 (代码中的最后一行是显示值的p元素,因此我可以尝试对其进行故障排除)背景颜色也会按预期更改。但图像不会被替换。

尝试在生成的网址中添加逗号,以防它出现语法问题,但没有任何反应。我甚至去了自由式,并尝试使用= url(),不同地方的不同逗号等等。所以基本上在这里刮桶。还写了一个没有变量的网址,看看是否可行,但仍然没有。在查看控制台时也没有错误。

它可能是一个基本的DOH!'事情,但现在我有心理障碍...

另外,有没有办法保留原始命名并只检索ID的编号部分?考虑使用[4]标识符获取第5位数字,但在运行两位数字时不会起作用。 (10,11等)

谢谢!

3 个答案:

答案 0 :(得分:1)

访问元素的jQuery行缺少#符号。

更改这些......

$('base' + eyeD).attr('src', newURLa);

对此...

$('#base' + eyeD).attr('src', newURLa);

此外,您使用普通JS的最后一行也可以在jQuery中完成,代码更少。

document.getElementsByid('check').innerhtml = eyeD;

要...

$("#check").html(eyeD);

但是,您应该始终对元素使用不同的ID。如果您需要同时使用多个元素,请改用类。

$(".check").html(eyeD);

答案 1 :(得分:0)

您正在错误地抓取元素。

要么像它那样抓住一个元素的类名:

$('.v2base' + eyeD + 'b').attr('src', newURLb);

或通过其ID:

$('#v2base' + eyeD + 'b').attr('src', newURLb);

答案 2 :(得分:0)

问题解决了!!它确实用哈希调用id,但它也必须用双引号调用。单引号可以起作用。

所以工作格式是

$("#v2base" + eyeD + "b") 

但它不会像这样工作

$('#v2base' + eyeD + 'b')

谢谢大家,感情用事