Как переключаться между двумя изображениями с помощью кнопки, используя код Javascript? - PullRequest
0 голосов
/ 25 августа 2018

У меня есть HTML-документ с изображением, и я хочу нажать кнопку, чтобы переключиться между цветной версией и черно-белой версией.Мой код JavaScript, как показано ниже.Я понимаю, что на этот вопрос уже был дан ответ, но ответы были неясными.Вопросы: Действительно ли условие ЕСЛИ действительно?Если нет, что я могу использовать?Можно ли сравнить файл image.src с адресом на моем компьютере, как указано ниже?Обратите внимание, что ничего не меняется, когда я нажимаю.Цветное изображение остается.

let colorImage = document.getElementById("colorImage");
let button2 = document.getElementById("button2");

function changeToBW() {

    if (colorImage.src == "Rondout.jpg") {    // I tried three === but that 
                                              // didn't work either.
        colorImage.src = "Rondout(B&W).jpg";
}
    else {
        colorImage.src = "Rondout.jpg";
}
}
 button2.addEventListener("click", changeToBW);

Часть моего HTML-кода, которая находится внутри тела ниже:

<img id = "colorImage" class = "image" src = "Rondout.jpg">
    <button id = "button2" type = "button">Change to B&W</button>

Ответы [ 2 ]

0 голосов
/ 25 августа 2018

Я скопировал ваш код, чтобы увидеть, в чем проблема. Я использовал 2 imgs, которые я только что скачал из Google: img1.png и img2.jpeg

Это не сработало. Поэтому я открыл DevTab из Google Chrome.

Итак, мой код:

let colorImage = document.getElementById("colorImage");
let button2 = document.getElementById("button2");

function changeToBW() {

    if (colorImage.src == "img1.png") { // colorImage.src = file:///D:/Kokal/Code/JsTests/img1.png

        colorImage.src = "img2.jpeg";
    }
    else {
        colorImage.src = "img1.png";
    }
}

button2.addEventListener("click", changeToBW);

Проблема в том, что colorImage.src содержит абсолютный путь к файлу. Таким образом, вы никогда не окажетесь в if, в который вы всегда входите в else.

Также вы хотите изменить атрибут src, а не свойство. Так что вам тоже нужно прочитать attr. Способ сделать это с помощью функции getAttribute('src') на colorImage. После этого вам нужно установить этот атрибут с помощью setAttribute('src', [new value])

Если что-то не понятно, проверьте мой код ниже.

HTML:

<!DOCTYPE html>
<html>
<head>
    <title>test</title>
</head>
<body>
    <img id = "colorImage" class = "image" src = "./img1.png">
    <button id = "button2" type = "button">Change to B&W</button>
    <script src="app.js" type="text/javascript"></script>
</body>
</html>

JS:

let colorImage = document.getElementById("colorImage");
let button2 = document.getElementById("button2");

function changeToBW() {

    if (colorImage.getAttribute('src') === "./img1.png") {
        colorImage.setAttribute('src', "./img2.jpg");
    }
    else {
        colorImage.setAttribute('src', "./img1.png");
    }
}

button2.addEventListener("click", changeToBW);
0 голосов
/ 25 августа 2018

Вы можете использовать атрибут данных , чтобы отслеживать, какое изображение отображается.

В моем примере для этого я использую атрибут данных data-color.

Затем в обработчике onClick я получаю значение data-color и переключаюсь между 0 и 1. Затем 1 и 0 соответствуют индексу в изображениях массива.Который добавляется к src из colorImage.

Вот рабочий пример.

let colorImage = document.getElementById("colorImage");
let button2 = document.getElementById("button2");

function changeToBW() {
  var images = [
    "https://images.pexels.com/photos/57905/pexels-photo-57905.jpeg",
    "https://images.pexels.com/photos/56866/garden-rose-red-pink-56866.jpeg"
  ];
  var imageNum = parseInt(colorImage.dataset.color);
  var nextImg = imageNum === 0 ? 1 : 0;
  colorImage.src = images[nextImg];
  colorImage.dataset.color = nextImg;
}
button2.addEventListener("click", changeToBW);
<img id="colorImage" data-color="0" class="image" src="https://images.pexels.com/photos/57905/pexels-photo-57905.jpeg" width="200">
<div><button id="button2" type="button">Change to B&W</button></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...