2016-03-02 55 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