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



在此处的第一个文章,所以请保持温柔; - )

在过去的几周中,我一直在学习编码,通过制作一个虚拟页面,并随着我的进步来实施我在增量上学习的内容,因此,这是一个混合的包,在我撰写的功能/代码时,它基于纯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)定义了图像的文件夹路径以替换某些div中的图像(cell3)。它还改变了它的颜色。抱歉,如果命名有点混乱...

所以我正在删除所有30个功能,并带有这一点的jQuery呼叫:

$('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" eied''从按钮确定的值。('1','2'等)。元素ID正确形成('Base1','Base2'...'base1b',base2b'...),并且URL形成正确。(代码中的最后一行是显示值的P元素,因此我可以尝试对其进行故障排除)背景颜色也按预期变化。但是这些图像不会被替换。

尝试将逗号添加到由此产生的URL中,以防它是语法问题,但什么也没有发生。我什至去了自由泳,并在其中使用= url(),在不同地方的不同逗号等尝试了一下。还写了一个没有变量的URL,以查看是否有效,但仍然没有。查看控制台时也没有错误。

这可能是基本的" doh!"事情,但是现在我有一个心理障碍...

另外,是否有一种方法可以保留原始命名并仅检索ID的编号部分?考虑使用[4]标识符获取第五位数,但是在运行双数数字时,这是行不通的。(10、11等)

谢谢!

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

更改这些...

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

对此...

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

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

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

to ...

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

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

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

您正在错误地抓取元素。

要么像这样抓住一个元素:

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

或通过其ID:

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

解决问题!它确实是用哈希命名的,但也必须带有双引号标记。单个反向逗号行不通。

所以工作格式为

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

但它不会像这样

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

谢谢大家,这是情感上的

最新更新