Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как можно при клике на нужную ссылку вывести confirm ? (https://javascript.ru/forum/dom-window/21631-kak-mozhno-pri-klike-na-nuzhnuyu-ssylku-vyvesti-confirm.html)

saturn 18.09.2011 14:42

Как можно при клике на нужную ссылку вывести confirm ?
 
Добрый день.
У меня такая ситуация, что есть
<img src="./images/page_white_delete.png" alt="Удалить"/>
но чтобы перестраховаться нужно чтобы выскакивало окошко Удалить : ДА или НЕТ.

melky 18.09.2011 15:40

где ссылка, на которую будут нажимать?

а так.. примерно так.
myLink.onclick = function(){
     return confirm("Удалить?");
}

saturn 18.09.2011 16:11

Спасибо, все работает, а сделал так
<img id="delete" src="./images/page_white_delete.png" alt="Удалить"/>


<script>      
var del = document.getElementById('delete');

del.onclick = function(){
     return confirm("Удалить?");
}
</script>


Сперва не работало пока не понял что нужно было вписать не в начале а после.

Рано радовался, выскакивает только на первой ссылке а остальные пропускает.

saturn 18.09.2011 17:19

Может кому известно почему срабатывает только первой ссылке?

melky 18.09.2011 18:04

потому что назначен обработчик только одной картинке

катинкам надо дать какойнибудь класс, например, "delete"

потом пройтись по всем картинкам в документе с помощью document.images, отфильтровать те, у которых есть класс delete и назначить им обработчик клика.

saturn 18.09.2011 18:25

Начало видимо такое должно быть..

var ilist = document.images;
for(var i = 0; i < ilist.length; i++) {
    if( ) { }


а дальше что-то я не пойму как сделать...

melky 18.09.2011 23:27

for (var images = document.images, i = 0, img, handler = function() {return confirm("Удалить?")}; img = images[i++];) ~img.className.indexOf("delete") && (img.onclick = handler);


но лучше так, eсли картинок на странице больше десяти-двадцати :

document.body.onclick = function(e){
    
    var clicked = e ? e.target:event.srcElement;
    
    clicked.tagName=="IMG" &&
        
        ~clicked.className.indexOf("delete") && 
        
            !confirm("Удалить?") &&
            
                e ? e.preventDefault():(event.returnValue=false);
    
}

saturn 19.09.2011 09:43

melky
Спасибо, выручил, я бы как начинающий долго бы думал над таким решением.
Вот это подошло:
for (var images = document.images, i = 0, img, handler = function() {return confirm("Удалить?")}; img = images[i++];) ~img.className.indexOf("delete") && (img.onclick = handler);


Часовой пояс GMT +3, время: 19:25.