Я пытаюсь дождаться ввода пользователя (нажав кнопку), прежде чем продолжить работу с программой. Упрощенная версия кода такова:
$(document).ready(function(){
var answer = $(".question").on("click", "button", takeAnswer);
alert(answer);
});
//Code to set the next question once the user has answered the previous question
function takeAnswer(){
var answer = ($(".question button").data("answer"));
alert(answer);
return answer;
}
Тело HTML
просто содержит следующее:
<p class="question"><button data-answer="1">Push me</button></p>
При загрузке HTML-оповещения [object Object]
. как только вы нажмете кнопку, на странице появится предупреждение 1
как предполагается. Я думаю, проблема заключается в том, что return
линия выполняется без ожидания щелчка пользователя. Мои исследования показывают, что мне нужно использовать функцию обратного вызова (есть несколько обсуждений по ожиданию ввода пользователя), но я смущен, потому что я думал, что включение кода takeAnswer
в отдельную функцию приведет к выполнению последующего кода.
Для дальнейшего контекста, моя цель - задать ряд вопросов о выборе вашего собственного приключения, изменив более поздние вопросы на основе более раннего ввода пользователем. Я намерен использовать jQuery для удаления предыдущего вопроса и размещения нового вопроса в соответствии с логикой в файле JavaScript. Изменить 1: Я должен также упомянуть, что я довольно новичок в этом и пытаюсь научить себя (если это еще не очевидно).
Редактировать 3: Вот полный контекст в JSFiddle. http://jsfiddle.net/T7VhC/ Проблема заключается в "неопределенной" ошибке, возникающей из строки 144 JS.
Изменить 2:
В конце концов я хочу добавить другие кнопки и захватить кнопку, нажав кнопку. Вот упрощенный пример другой (дисфункциональной, потому что, я думаю, нет обратного вызова) попытки реализовать то, что я делаю:
function takeAnswer(){
$(document).ready(function(){
$(".question").on("click", "button", function(){
return $(this).data("answer");
});
});
}
alert(takeAnswer());
HTML:
<body>
<p class="question"><button data-answer="1">Push me</button></p>
<p class="question"><button data-answer="2">Or push me</button></p>
</body>
Благодарю.
Для полного кода вы можете использовать:
$(document).ready(function(){
$(".question").on("click", "button", takeAnswer);
});
//Code to set the next question once the user has answered the previous question
$(takeAnswer);
function takeAnswer(){
var answer = $(".question button").data("answer");
alert(answer);
}
Попробуйте следующее
<script>
$(document).ready(function(){
var answer = $(".question").on("click", "button", takeAnswer);
takeAnswer();
});
//Code to set the next question once the user has answered the previous question
function takeAnswer(){
var answer = ($(".question button").data("answer"));
alert(answer);
return answer;
}
</script>
1
. Я отредактировал свой вопрос, чтобы отразить тот факт, что я хочу вернуть значение data
одной из нескольких кнопок.
var answer = $(".question").on("click", "button", takeAnswer);
потому что тогдаanswer
равным$(".question")