Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js] problem z dynamiczną zmianą zmiennej
Forum PHP.pl > Forum > Przedszkole
sweter
Mam taki kod:
Kod
<html>
</head>
<script language="javascript">
      var zmienna = 0;
</script>
</head>
<body>

<a onclick="var zmienna=1;" href="#">1</a> |
<a onclick="var zmienna=2;" href="#">2</a>

<script language="javascript">
document.write("Wybrałeś " + zmienna);
</script>
</body>
</html>


I nie wiem czemu, gdy kliknę na 1 lub 2 to napis pod spodem nie zmienia się.
Możecie mnie oświecić?
piotrooo89
a może tak:

  1. function klik(co)
  2. {
  3. var pole = document.getElementById('pok');
  4. pole.innerHTML = co;
  5. }
  6. </head>
  7.  
  8. <a onClick="klik(1);" href="#">1</a> |
  9. <a onClick="klik(2);" href="#">2</a>
  10.  
  11. <div id="pok"></div>
  12. </body>
  13. </html>
sweter
Dzięki, ale ja wolałbym, żeby te cyferki były przechowywane w zmiennej.
piotrooo89
po co? podajesz je jako argument funkcji...
erix
Cytat
Możecie mnie oświecić?

Nie wywołujesz metody, która uaktualnia dane. Sama zmienna ma nową wartość tylko w pamięci, a nie ma odzwierciedlenia w drzewie dokumentu. Jeśli byś chciał samą zmienną, to musiałbyś zrobić funkcję "nasłuchującą", czyli taką, która by odświeżała zawartość tekstu.

PS. document.write raczej kojarzy się z czasami Netscape Communicator; poza tym - nie zmodyfikujesz wartości już zrenderowanego dokumentu.
sweter
no dobra, a możesz mi powiedzieć jak wyciągnąć z Twojej funkcji numer na który się klikneło?
melkorm
pod linijką z funcją

Kod
alert(co);


może jakiś tutorial JS'owy na początek snitch.gif

... tak tylko radze .... .
piotrooo89
Cytat
numer na który się klikneło?


nie rozumiem? podajesz go jako argument funkcji, ten numerek.
sweter
Napiszę, może o co mi chodzi, bo coś nie możemy się dogadać smile.gif

Mam tabelką z trzema komórkami.
Chcę, aby użytkownik mógł kliknąć na jednym kwadracie i zwolnic przycisk na innym, i żeby numery kwadracików były przechowywane w zmiennej w jednej funkcji.

Na razie mam coś takiego, ale jedna funkcja jest wywoływana dwa razy, a to nie oto mi chodziło
Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>

<script language="javascript">
  function klikniecie(cyfra){
      document.write("Klikni^eto na przycisku nr " + cyfra);
  }
  function zwolnienie(cyfra2){
      document.write("Zwolniono na przycisku nr " + cyfra2)
  }
  function klikniecie(stop,start){
       alert("start: " + start + ", stop: " +stop);
  }
</script>
</head>
<body>


<table width="90" border="1">
  <tr height="30">
    <td width="30"><div id="1" onmousedown="klikniecie(0,1)" onmouseup="klikniecie(1)" style="background-color:green; width:30px; height:30px;"></div></td>
    <td width="30"><div id="2" onmousedown="klikniecie(0,2)" onmouseup="klikniecie(2)" style="background-color:green; width:30px; height:30px;"></div></td>
    <td width="30"><div id="3" onmousedown="klikniecie(0,3)" onmouseup="klikniecie(3)" style="background-color:green; width:30px; height:30px;"></div></td>
  </tr>
</table>


</body>
</html>
erix
Napisałem coś:
Cytat
PS. document.write raczej kojarzy się z czasami Netscape Communicator; poza tym - nie zmodyfikujesz wartości już zrenderowanego dokumentu.


Poza tym:
Kod
function klikniecie(cyfra){
      document.write("Klikni^eto na przycisku nr " + cyfra);
  }
  function zwolnienie(cyfra2){
      document.write("Zwolniono na przycisku nr " + cyfra2)
  }

Zrób zmienną uwspólnioną dla obu funkcji i w niej przechowuj wartości. Poza tym, klikniecie przyjmuje jeden argument; drugi, który podajesz, jest ignorowany.
Spawnm
zobacz to:
  1. <script language="JavaScript">
  2. function klik(jak,co){
  3. if(jak==1) {
  4. document.getElementById('klik').innerHTML='kliknol na'+co;
  5. }
  6. else
  7. {
  8. document.getElementById('klik').innerHTML="zwolnil na"+co;
  9. }
  10. }
  11.  
  12. <div id=klik style=" z-index: 2; width:100px; height:25; background-color:black; color: white; " ></div>
  13. <div onmousedown="klik(1,1)" onmouseup="klik(2,1)">klik1</div>
  14. <div onmousedown="klik(1,2)" onmouseup="klik(2,2)">klik2</div>


//edit-> mini optymalizacja kodu
piotrooo89
a może Coś takiego?

  1. function zakres(one)
  2. {
  3. var pole = document.getElementById('pok');
  4.  
  5.  
  6. if (pole.innerHTML > 3)
  7. {
  8. pole.innerHTML = '';
  9. pole.innerHTML = one;
  10. }
  11. else
  12. {
  13. pole.innerHTML += one;
  14. }
  15. }
  16.  
  17.  
  18. <table width="90" border="1">
  19. <tr height="30">
  20. <td width="30"><div id="1" onClick="zakres(1)" style="background-color:green; width:30px; height:30px;"></div></td>
  21. <td width="30"><div id="2" onClick="zakres(2)" style="background-color:green; width:30px; height:30px;"></div></td>
  22. <td width="30"><div id="3" onClick="zakres(3)" style="background-color:green; width:30px; height:30px;"></div></td>
  23. </tr>
  24.  
  25. <div id="pok">
  26. </div>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.