У меня есть скрипт с именем main.js, который прикреплен к index.html. У меня есть функция onclick(), настроенная в index.html, которая должна изменить значение переменной. Этот вопрос был бы легок, если бы сценарий был написан с помощью тегов сценария, однако, несмотря на попытки выяснить это, я не уверен, как это сделать, когда на сценарий ссылаются через тег сценария. Код на самом деле не имеет отношения к вопросу, но в любом случае, вот строчка.

<li><a href="main.html" onclick='card=thing;'>thing</a></li>

Card - это переменная в main.js, которую нужно изменить. В main.js перед событием onclick() для карты устанавливается значение NULL. Спасибо.

0
user9553863 21 Авг 2018 в 07:34

3 ответа

Лучший ответ

Вы можете написать функцию в тегах скрипта или в main.js и вызывать ее по клику

<li><a href="javascript:void(0)" onclick='changeCard("thing")'>thing</a></li>
<script type="text/javascript">
    function changeCard(val) {
        card = val;
    }
</script>
0
Rohit Dhiman 21 Авг 2018 в 04:49

Напишите функцию в home.js и внутри функции, к которой вы можете получить доступ и измените переменную href.

Html должен быть таким

<li><a  id="variable" href="main.html" onclick='card=thing;'>thing</a></li>

В твою функцию добавь эту строку

document.getElementById("variable").href="your reference";
0
Senthaalan 21 Авг 2018 в 04:49

Я думаю, что ваш код хорош с точки зрения синтаксиса, потому что если файл main.js связан с тем же html, где находится эта строка, то card является глобальной переменной, которую вы можете переопределить без каких-либо проблем.

Хотя проблема в этом случае может быть иной, потому что вы изменяете эту переменную, когда пользователь щелкает тег привязки, который указывает на файл main.html в его атрибуте href.

Так что на самом деле произойдет то, что два обработчика событий будут выполнены, первый будет вашим кодом, изменяющим значение этой переменной, а второй фактически перенаправит ваше окно в другой html-файл, изменяя фактический контекст вашего текущего окна и делая его глобальные переменные больше не нужны, и это не имеет смысла.

Если вы хотите что-то сделать в js перед переходом куда-то еще, вам нужно присоединить обработчик события к элементу привязки и вызвать метод event.preventDefault(), чтобы предотвратить поведение тега привязки по умолчанию при его нажатии, другими словами , предотвратить навигацию. Это будет выглядеть примерно так:

// Js code:
var anchor = document.querySelector('a')
anchor.addEventListener('click', function(event) {
    event.preventDefault()
    // Do the stuff you want to do on click here, before navigating, etc
    card = thing

    // ... explicitly navigate
})
0
Mauro Aguilar 21 Авг 2018 в 05:23
51941613