Wątek przeniesiony 2015-03-05 14:22 z Webmastering przez ŁF.

javascript onkeypress nie wykonuje się

2015-02-24 02:39
0

Witajcie. Staram się napisać Test Stroopa w formie apki webowej w php przy użyciu javascript. Po załadowaniu strony ma wyświetlić się słowo, które jest nazwą koloru o jakiejś tam barwie. Z tym nie ma problemu. Ale teraz jeszcze chodzi o to, żeby użytkownik nacisnął na klawiaturze klawisz odpowiadający danemu kolorowi. Takich testów ma być 16 i za każdym razem do bazy danych ma zostać zapisany czas reakcji i poprawność odpowiedzi.
Wygląda na to, że w napisanym przeze mnie kodzie jest problem z uruchomieniem skryptu javascript. Słowo wyświetla się, ale dalej nic się nie dzieje, nie ma reakcji na naciśnięcie klawisza.

Bardzo proszę o pomoc.

<html>
<body onload="dzialanie()">

<script language="text/javascript">
function dzialanie()
{
    document.write("test");
    var przycisk = event.keyCode;
    var czas_stop = event.timeStamp; // Pobiera timestamp po nacisnieciu klawisza
    var p_czas_start_micro = document.getElementsByName("czasPoczatkowy"); // Czas poczatkowy z microtime
    var p_czas_start_mili = p_czas_start_micro/1000; // Czas z microtime w milisekundach
    var czas_reakcji = czas_stop - p_czas_start_mili; // Pomiar roznicy czasow
    document.getElementsByName("czasKoncowy").value = czas_stop; // Przekazanie do formularza czasu końcowego
    document.getElementsByName("czasRoznica").value = czas_reakcji; // Przekazanie do formularza różnicy czasów
    var p_losuj_nr = document.getElementsByName("wylosowanyKolor"); // Pobiera z kodu nizej kod odpowiadajacy klawiszowi przypisanemu do koloru
    var poprawne; // zmienna przechowujaca informacje czy odpowiedz poprawna
    if (przycisk == p_losuj_nr) // sprawdzenie czy odpowiedz poprawna
    {
    poprawne = 1;
    } else
    {
        poprawne = 0;
    }
    document.getElementsByName("odpowiedzCzyPoprawna").value = poprawne; // Przekazanie do formularza poprawnosci odpowiedzi
}

</script>

<?php

[...]

?>
<form method="POST" action="index.php?case='.$case.'" name="formularz" id="formularz">
<input type="hidden" name="wylosowanyKolor" value=$losuj_nr />
<input type="hidden" name="czasPoczatkowy" value=$czas_start />
<input type="hidden" name="czasKoncowy" value"" />
<input type="hidden" name="czasRoznica" value"" />
<input type="hidden" name="odpowiedzCzyPoprawna" value="" />

</form>

<?php
echo $czas_start;

?>

</body>
</html> 
edytowany 2x, ostatnio: noldok, 2015-02-24 11:06

Pozostało 580 znaków

2015-02-24 09:27
0

skoro problem dotyczy javascriptu to po co wklejasz ścianę kodu php?
ogarnij posta tak, żeby materiały dotyczyły problemu, a nie wszystkiego dookoła.

I nie możesz oczekiwać, że na elemencie, którego nie da się aktywować (bo jest ukryty) będzie Ci działać zdarzenie naciśnięcia klawisza. onkeypress zadziała na inpucie, który jest widoczny. Być może chcesz przypiąć zdarzenie do body


Pozostało 580 znaków

2015-02-24 11:06
0

Poprawiłem.

Przypiąłem wywołanie funkcji do body, ale nadal nie wykonuje się.

Dziwna sprawa.
Nawet coś takiego się nie wykonuje:

<body onload="dzialanie()">
<script language="text/javascript">
document.getElementById("demo").innerHTML = "Hello Dolly.";
</script>
<p id="demo"></p>

</body>
edytowany 2x, ostatnio: noldok, 2015-02-24 12:07
&lt;script&gt; nie posiada atrybutu language - wywal. Taka uwaga poza tematem. - dzek69 2015-02-24 20:56

Pozostało 580 znaków

2015-02-24 20:57
0

No ale dlaczego onload? Miało być onkeypress. Daj sobie do funkcji dzialanie() tylko alert(1) - zobaczysz, że coś się wykonuje. Więcej kodu może sprawić, że kod się wywali gdzieś po drodze (a to powinieneś zaobserwować wtedy w konsoli błędów).


Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0