#javascript
#javascript
Вопрос:
У меня есть эта функция:
function myFunction(clicked_id){
let playerOne = document.getElementById('player-1').innerHTML = clicked_id
return playerOne
}
Мой HTML:
<img id="rock" onClick = "myFunction(this.id)" src="https://upload.wikimedia.org/wikipedia/commons/b/b4/Logan_Rock_Treen_closeup.jpg"/>
Идея в том, что я получаю идентификатор, и затем он возвращается (только по щелчку), а затем сохраняется в переменной, чтобы я мог использовать его в отдельном внешнем операторе if в глобальной области видимости или другой внешней функции.
Я не могу получить результат функции.
Как я могу это сделать?
Спасибо
Ответ №1:
Вы должны определить глобальную переменную:
let pressed = ""
function myFunction(clicked_id){
let playerOne = document.getElementById('player-1').innerHTML = clicked_id
pressed = playerOne
return playerOne
}
РЕДАКТИРОВАТЬ: то, что вы хотите, напрямую невозможно. Вы должны поместить все, что взаимодействует после щелчка, в обработчик событий.
Комментарии:
1. когда я консольный журнал (PlayerOne), это говорит о том, что переменная не определена. Если я console.log (нажат), он регистрирует пустое значение в консоли, поскольку при загрузке страницы нет никакого значения для регистрации, пока я не нажму на него
2. Разве это не ожидалось? Итак, глобальная переменная
pressed
. Но оно будет заполнено только при нажатии.3. это было бы, если бы оно заполняло его при нажатии. При моем щелчке ничего не регистрируется, и если после этой функции я добавляю оператор if, переменная «нажата» по-прежнему пуста. Идея в том, что я получил значение для захвата после вызова функции.
4. если после выполнения этой функции я делаю
if (pressed === "rock"){ console.log("hey") }
, это ничего не возвращает и предполагает, что нажато = «»5. Попробуйте добавить этот код в функцию.
Ответ №2:
Давайте посмотрим, что вы на самом деле делаете:
function myFunction(clicked_id){
let playerOne = document.getElementById('player-1').innerHTML = clicked_id;
return playerOne;
}
Вы устанавливаете внутренний HTML-код на идентификатор (это изображение, поэтому я очень смущен, почему вы это делаете, но хорошо). Затем вы возвращаете идентификатор.
Давайте определим переменную в javascript:
var x;
Затем вы можете добавить это в свой onclick в HTML:
<img id="rock" onclick = "x = myFunction(this.id)" src="https://upload.wikimedia.org/wikipedia/commons/b/b4/Logan_Rock_Treen_closeup.jpg"/>
Теперь функция будет запущена, и всякий раз, когда вы нажимаете на нее, функция будет запускаться и сохранять результат x
, с которым вы затем можете работать или использовать где угодно. При каждом нажатии оно x
будет перезаписываться.
В качестве дополнительного примечания, не рекомендуется использовать встроенные onclick=""
, и вам следует попробовать использовать JavaScript EventTarget.addEventListener
.
Комментарии:
1. Это не работает, потому что переменная не задается при загрузке страницы. Та же проблема и с моим решением.
2. @blaumeise20 что такое? Как вы запускаете свой скрипт?
3. @blaumeise20 кроме того, это не то, почему ваше решение не то, что он хочет