首先发布这里,所以请温柔; - )
我过去几周一直在学习编写虚拟页面的编码,并且随着我的进步逐步实现我在其上学到的东西,因此它是一个混合包,功能/代码是根据我写的时间,基于纯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等)
谢谢!
答案 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')
谢谢大家,感情用事