Я создал веб-сайт с викториной, где вопросы загружаются из базы данных по одному. В конце всех вопросов отображается оценка. Я создал таймер, как показано ниже:
var tim;
var min = 25;
var sec = 01;
var f = new Date();
function f1() {
f2();
document.getElementById("starttime").innerHTML = "You Started Your Exam At " + f.getHours() + ":" + f.getMinutes();
}
function f2() {
if (parseInt(sec) > 0) {
sec = parseInt(sec) - 1;
document.getElementById("showtime").innerHTML = "Time Left :<br>" + min + " Minutes ," + sec + " Seconds";
tim = setTimeout("f2()", 1000);
} else {
if (parseInt(sec) == 0) {
min = parseInt(min) - 1;
if (parseInt(min) == 0) {
clearTimeout(tim);
location.href = "score.php";
} else {
sec = 60;
document.getElementById("showtime").innerHTML = "Time Left :<br>" + min + " Minutes ," + sec + " Seconds";
tim = setTimeout("f2()", 1000);
}
}
}
}
setTimeout(function() {
alert("5 minutes remaining");
}, 1200000);
<div class = "zara">
<form align = "center" id = "form1" runat = "server">
<div>
<table width = "100%" align = "center">
<tr>
<td colspan = "2">
</td>
</tr>
<tr>
<td>
<div class = "col_third end">
<div class = "hover panel">
<div class = "front">
<div class = "box1">
<p>
<div id = "showtime"></div>
</p>
</div>
</div>
<div class = "back">
<div class = "box2">
<p>
<div id = "starttime"></div>
</p>
</div>
</div>
</div>
</div>
<!-- <div id = "starttime"></div><br /> -->
<div id = "endtime"></div><br />
<!-- <div id = "showtime"></div> -->
</td>
</tr>
<tr>
<td>
<br />
</td>
</tr>
</table>
<br />
</div>
</form>
</div>
Оценка отображается на той же странице с использованием ajax, и я выполнил следующий сценарий, если все вопросы остались позади:
if ($number_of_all_questions <=$ _POST[ 'next_id']){ // Quiz finished, show results echo
"<div>
<h2>Results:</h2>
<p>Your score is: {$_SESSION['correct_score']} out of 25</p>
<script>
$('button[onclick='getPreQuestion()']').hide();
$('.zara').hide();
</script>
</div>";
}
Все работает нормально, но div таймера не скрыт. Я хочу скрыть div таймера, когда отображается счет / когда все вопросы закончены.
ошибка не отображается
Вы должны получить ошибку в консоли. У вас неправильный синтаксис в строке $ ('button [onclick =' getPreQuestion () ']'). Hide (); Это должно быть $ ('button [onclick = "getPreQuestion ()"]'). Hide ();
@Sabik, эта линия работает нормально. но div "zara" не скрывается
Если этот последний фрагмент кода поступает из ajax-вызова, он никогда не запустится.
$ ('. zara'). скрыть (); этот код не работает. это происходит из вызова ajax
@Michel, тогда как я могу это скрыть?
@proofzy, я не понял. какая страница



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ради всего святого, научитесь упрощать вопросы только до сути, а не просто сбрасывать весь код. Нам было бы намного проще и быстрее ответить!
Просто измените кнопку отправки на отправку формы или что-то еще. Я не собираюсь разбирать весь этот код сам (извините). Это должно служить рабочим шаблоном
var inv = document.getElementById('invisiblediv');
var submitb = document.querySelector('button');
submitb.addEventListener('click',function(){
alert('Submitted form in time!');
inv.style.visibility = 'visible';
clearTimeout(testtimer);
});
var testtimer = setTimeout(function(){
alert('Time limit expired, showing results!');
inv.style.visibility = 'visible';
}, 8000);#invisiblediv {
visibility: hidden;
border: 1px solid black;
padding: 2px;
margin-bottom: 10px;
}<div id = "invisiblediv">Hello world!</div>
<button>Show hidden results</button>это не тот ответ, который я хочу
Убедитесь, что ваш javascript выполняется после включения jQuery.
Попробуйте так:
<?php
if ($number_of_all_questions <= $_POST[ 'next_id']){ // Quiz finished, show results
echo "<div>
<h2>Results:</h2>
<p>Your score is: {$_SESSION['correct_score']} out of 25</p>
</div>";
$finished = 1;
}
?>
<script>
// let's store it from php variable to javascript
var finished = "<?php echo $finished; ?>";
$(document).ready(function(){
if (finished === 1) {
$('.zara').hide();
}
});
</script>
синтаксическая ошибка, неожиданный '_POST' (T_STRING), ожидаемая переменная (T_VARIABLE) или '{' или '$'
синтаксическая ошибка, неожиданный '<', ожидается конец файла в
Het получает это как ответ от ajax-вызова, поэтому, если он не использует eval(), он никогда не запустится.
это все еще ошибка. код неправильно отформатирован
синтаксическая ошибка, неожиданный '<', ожидается конец файла в
Ваш скрипт никогда не запустится, если вы получите его в ответ на ajax-вызов, если только вы не используете какой-нибудь злой eval().
Создайте функцию с именем hide() и загрузите ее обычным JavaScript:
function hide{
$('button[onclick='getPreQuestion()']').hide();
$('.zara').hide();
}
В вашем PHP только эхо div:
<?php
if ($number_of_all_questions <=$ _POST[ 'next_id']){
echo "<div>
<h2>Results:</h2>
<p>Your score is: {$_SESSION['correct_score']} out of 25</p>
</div>";
}
и в вашем ajax-коде найдите подсказку, что игра закончилась. Что-то вроде (я не очень разбираюсь в jQuery, поэтому здесь могут быть ошибки):
$.ajax({
....,
success: function(result){
//search for the word 'Results:'. This will return -1 if not found
var n = result.search("Results:");
//If the word is found, run function hide()
if (n>=0)hide();
},
....
});
Есть ли ошибка?