2017-04-09 66 views
0

我试图根据“数据激活”的数据属性更改图像的选择。Javascript |将src更改为数据属性生效

当数据激活等于true时,它会将图像更改为表示该平台已被选中,并且其他所有人都取消选择仅显示一个。

我现在的问题是,图像正在通过当前被点击的平台,因此它将取消选中的图像更改为禁用的当前图像,因此图像失灵。

你可以在这里看到... https://miotks.co.uk/register(我有一个自分配的证书)

这是我当前的代码,我有它...

function checkState(obj, platform) { 
var checkActive = document.querySelectorAll("[data-active='true']"); 
var alreadyActive = checkActive.length; 

if (alreadyActive >= 2) { 
    for (var i = 0; i < checkActive.length; i++) { 

     // Reset the images to the default when all changed to false. 
     checkActive[i].setAttribute('data-active', 'false'); 
     checkActive[i].setAttribute('src', '/images/' + platform + '-noselect.png'); 

     obj.setAttribute('data-active', 'true'); 
     obj.setAttribute('src', '/images/' + platform + '-select.png'); 
    } 
} else { 

}} 

它法官的长度一旦超过或等于2,选择多少个元素并且具有“真”,然后它们全部被重置并且应该改变为当前的元素。

这是怎么了呼吁点击事件的函数...

checkState(this, 'steam'); 
+0

该网址返回403错误。 – JLRishe

+0

@JLRishe现在尝试,对不起。 – cmiotk

回答

1

它看起来像你可以改变-select-noselect中的每个图像的URL:

function checkState(obj, platform) { 
    var checkActive = document.querySelectorAll("[data-active='true']"); 
    var alreadyActive = checkActive.length; 

    if (alreadyActive) { 
     for (var i = 0; i < checkActive.length; i++) { 
      // Reset the images to the default when all changed to false. 
      checkActive[i].setAttribute('data-active', 'false'); 
      checkActive[i].src = checkActive[i].src.replace('-select', '-noselect'); 
     } 
    } 

    obj.setAttribute('data-active', 'true'); 
    obj.src = obj.src.replace('-noselect', '-select'); 
} 
+0

但是当我点击其他图像时,它不会取消选择当前不活动的图像。 – cmiotk

+0

@cmiotk如果我已经理解了你的问题,我相信你想取消选择除点击之外的所有图像。我错了吗? – JLRishe

+0

这是正确的,但使用您提供的代码无法实现此目的。相反,它只是将图像设置为活动状态而不是禁用状态 – cmiotk