2016-03-02 54 views
0

下面的代码显示图像,如果点击它,将其中一个选中(使用蓝色边框)。它还将选定的src存储在变量(src1)中,但最后一点不起作用。我的错误在哪里?感谢你们!保存图像src的函数不起作用

var src1 = ""; 
var img = new Array(); 
img[0] = new Image(); 
img[0].src = "../images/poggiatesta2.jpg"; 
img[1] = new Image(); 
img[1].src = "../images/poggiatesta1.JPG"; 
img[2] = new Image(); 
img[2].src = "../images/poggiatesta3.jpg"; 
for (var i = 0; i < img.length; i++) { 
    var imagetag = document.createElement("img"); 
    var onclick = document.createAttribute("onclick"); 
    onclick.value = "myfun(" + i + ")"; 

    var sorc = document.createAttribute("src"); 
    sorc.value = img[i].src; 

    var id = document.createAttribute("id"); 
    id.value = "my_image" + i; 

    var clas = document.createAttribute("class"); 
    clas.value = "my_image_clas"; 

    imagetag.setAttributeNode(clas); 
    imagetag.setAttributeNode(onclick); 
    imagetag.setAttributeNode(sorc); 
    imagetag.setAttributeNode(id); 
    document.body.appendChild(imagetag); 
} 
function myfun(i) { 
    src1 = document.getElementById('my_image' + i).src; 

} 
var _last = null; 
function select(element) { 
    element.onclick = function() { 
     element.classList.toggle('selected'); 
     if (_last) _last.classList.remove("selected"); 
     _last = element.classList.contains("selected") ? element : null; 
    } 
} 

Array.from(document.getElementsByClassName('my_image_clas')).forEach(select); 

回答

1

试试这个:

var src1 = ""; 
    var img = new Array(); 
    img[0] = new Image(); 
    img[0].src = "../images/poggiatesta2.jpg"; 
    img[1] = new Image(); 
    img[1].src = "../images/poggiatesta1.JPG"; 
    img[2] = new Image(); 
    img[2].src = "../images/poggiatesta3.jpg"; 


for (var i = 0; i < img.length; i++) { 
    var imagetag = document.createElement("img"); 


    var sorc = document.createAttribute("src"); 
    sorc.value = img[i].src; 

    var id = document.createAttribute("id"); 
    id.value = "my_image" + i; 

    var clas = document.createAttribute("class"); 
    clas.value = "my_image_clas"; 

    imagetag.setAttributeNode(clas); 
    imagetag.setAttributeNode(sorc); 
    imagetag.setAttributeNode(id); 
    document.body.appendChild(imagetag); 

} 

var _last = null; 
function select(element) { 
    element.onclick = function() { 
     element.classList.toggle('selected'); 
     if (_last) _last.classList.remove("selected"); 
     _last = element.classList.contains("selected") ? element : null; 
     src1 = _last.src; 
    } 
} 

Array.from(document.getElementsByClassName('my_image_clas')).forEach(select); 
+0

爱你,它有效!<3 –

2

您使用错误的方式添加元素的事件。您的活动未被触发。

用这种方式来代替:

var imagetag = document.createElement("img"); 
imagetag.onclick = function() { 
    myfun(i); 
}; 
+0

我应该把这个代码正上方的循环?因为它不起作用:( –

+0

你能描述你的错误吗?你是否进入了函数myfun?如果是,那么'i'的值是多少? – R3tep