Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Не получается, изменение атрибутов по тегу (https://javascript.ru/forum/events/75536-ne-poluchaetsya-izmenenie-atributov-po-tegu.html)

Kiten 17.10.2018 15:39

Не получается, изменение атрибутов по тегу
 
Всем привет!
Мне нужно сделать скрипт, который делает следующее:
1. Находит все элементы по тегу <img>;
2. Присваивает им атрибут onclick с разными значениями;

На выходе должны произойти такие изменения:

<div class="gallery">
	<img src="img/1.jpg" alt="" onclick="qwerty(0)">
	<img src="img/2.jpg" alt="" onclick="qwerty(1)">
	<img src="img/3.jpg" alt="" onclick="qwerty(2)">
</div>


Подскажите пожалуйста, как правильно преобразовать переменную, чтобы там были числа (а не имя переменной i)? Вот листинг:

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<link rel="stylesheet" type="text/css" href="css/normalize.css">
	<link rel="stylesheet" type="text/css" href="css/skeleton.css">
	<link rel="stylesheet" type="text/css" href="css/main.css">
	<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
	<script src="https://code.jquery.com/jquery-2.2.0.min.js" type="text/javascript"></script>
</head>
<body>

<div class="container">
	<div class="gallery">
		<img src="img/1.jpg" alt="">
		<img src="img/2.jpg" alt="">
		<img src="img/3.jpg" alt="">
	</div>
	<button onclick="dp()">BUTTON</button>
</div>

<script>
function dp() {
    var x = document.getElementsByTagName("IMG");
    var i;
    for (i = 0; i < x.length; i++) {
		x[i].setAttribute("onclick", "qwerty(i)");
    }
}
function qwerty(i) {
	Alert(i);
}
</script>
	
</body>
</html>


Буду благодарен за любую помощь!

рони 17.10.2018 15:46

Kiten,
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" type="text/css" href="css/normalize.css">
    <link rel="stylesheet" type="text/css" href="css/skeleton.css">
    <link rel="stylesheet" type="text/css" href="css/main.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    <script src="https://code.jquery.com/jquery-2.2.0.min.js" type="text/javascript"></script>
</head>
<body>

<div class="container">
    <div class="gallery">
        <img src="img/1.jpg" alt="">
        <img src="img/2.jpg" alt="">
        <img src="img/3.jpg" alt="">
    </div>
    <button onclick="dp()">BUTTON</button>
</div>

<script>
function dp() {
    var x = document.getElementsByTagName("IMG");
    var i;
    for (i = 0; i < x.length; i++) {
        x[i].addEventListener("click", qwerty(i));
    }
}
function qwerty(i) {
  return function() {
          alert(i);
}
}
</script>

</body>
</html>

Kiten 17.10.2018 16:15

рони,
Спасибо большое! Как раз как я хотел)


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