Захватить возвращаемое значение для использования в операторе if

#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 кроме того, это не то, почему ваше решение не то, что он хочет