Javascript - Обмен Divs на KeyDown

Я могу поменять местами два div, щелкнув ссылку, как показано в следующем коде, но как мне поменять местами их, нажав клавишу?

Вот что у меня есть:

function SwapDivs(div1, div2) {
        d1 = document.getElementById(div1);
        d2 = document.getElementById(div2);
        if (d2.style.display == "none") {
            d1.style.display = "none";
            d2.style.display = "block";
        } else {
            d1.style.display = "block";
            d2.style.display = "none";
        }
    }
<p>
    <a href = "javascript:SwapDivs('FirstDiv','SecondDiv')">Swap Divs</a>
</p>


<div id = "FirstDiv" style = "display:block">
    <p>
        This div is displayed when the page opens.
    </p>
</div>

<div id = "SecondDiv" style = "display:none">
    <p>
        This div is displayed when the link is clicked.
    </p>
</div>

Раньше я использовал OnKeyDown, но не могу понять, как его применить здесь ...

Это просто не работает:

    document.body.addEventListener("keydown", function(event) {
        if (event.keyCode === 32) {
            function SwapDivs(div1, div2);
        }
    });

не следует ли вам вызывать SwapDivs с параметрами «FirstDiv» и «SecondDiv», как вы это делали для рабочего примера со ссылкой?

Robin Zigmond 19.09.2018 15:25

Я пробовал это: document.body.addEventListener ("keydown", function (event) {if (event.keyCode === 32) {SwapDivs (div1, div2);}}); Но все равно не работает ...

MikeMichaels 19.09.2018 15:40

Думаю, вы упустили ключевой момент моего комментария. Попробуйте это: ocument.body.addEventListener("keydown", function(event) { if (event.keyCode === 32) { SwapDivs('FirstDiv', 'SecondDiv'); } });

Robin Zigmond 19.09.2018 15:42

Решил это. Спасибо за помощь.

MikeMichaels 19.09.2018 15:49
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
42
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  1. Если вы вызываете функцию, вы не пишете перед ней ключевое слово «функция».

  2. Вы передали две несуществующие переменные с именами div1 и div2 в функцию SwapDivs, которая была вызвана внутри прослушивателя событий.

  3. Если вы добавляете прослушиватель событий в тело, вам необходимо добавить тег <body>.

В качестве примера я использовал «клавишу со стрелкой вниз» с кодом 40.

    document.body.addEventListener("keydown", function(event) {
        if (event.keyCode === 40) {
           SwapDivs('FirstDiv','SecondDiv');
        }
    });

Вот код: https://codepen.io/anon/pen/MqZomW

Спасибо, но у меня это не работает. Я пробовал на странице, на которую вы ссылаетесь, а также пытался скопировать и вставить код и открыть его в Firefox, Chrome и IE. Ссылки по-прежнему работают, но когда я нажимаю клавишу пробела, ничего не происходит ... Как вы думаете, в чем проблема?

MikeMichaels 19.09.2018 15:38

Он работает с клавишей со стрелкой вниз. Я изменил код клавиши на 32 (пробел), и он начал работать. Большое спасибо за Вашу помощь!

MikeMichaels 19.09.2018 15:48

Другие вопросы по теме