Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zmiana tr
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Dex1987
Witam mam taki kodzik:

  1. <script language="JavaScript" type="text/javascript">
  2.  
  3. function change (name) {
  4.  
  5. document.getElementById (name).innerHTML = '<font face="verdana" size="2">OK</font>';
  6.  
  7. name = document.getElementById (name).innerHTML
  8. }
  9.  
  10.  
  11. <table border="1" widht="100%">
  12. <tr onClick="change ('foo1')">
  13. <td width="100%">
  14. <div id="foo1">
  15. tekst 1
  16. </div>
  17. </td>
  18. </tr>
  19. <tr onClick="change ('foo2')">
  20. <td width="100%">
  21. <div id="foo2">
  22. tekst 2
  23. </div>
  24. </td>
  25. </tr>


Dzila on tak: mam x komorek, kaza ma jakas wartosc... teraz jak klikne na jakas zmienia sie na OK, ale gdy klikne na inna to chcialbym zeby poprzednia wracal do poczatkowej formy.
Zajec
Zadziała?
Kod
<script type="text/javascript">
var lastid = false;
var lastval = false;

function change(name) {
    if (lastid && lastval) document.getElementById(lastid).innerHTML=lastval;
    lastid = name;
    lastval = document.getElementById(name).innerHTML;

    document.getElementById(name).innerHTML = '<font face="verdana" size="2">OK</font>';
}

</script>
Dex1987
ok zrobilem tak jak napisałes i dziala swietnie, ale teraz mam taki problemik, nie moge edytowac wartosci inputa ;/

kod:

  1. <?php
  2.  
  3. echo $_POST['foo1'];
  4.  
  5. ?>
  6.  
  7.  
  8. <script type="text/javascript">
  9. var lastid = false;
  10. var lastval = false;
  11.  
  12. function change(name) {
  13. if (lastid && lastval) document.getElementById(lastid).innerHTML=lastval;
  14. lastid = name;
  15. lastval = document.getElementById(name).innerHTML;
  16.  
  17. document.getElementById(name).innerHTML = '<input name="'+name+'" type="text" value="'+document.getElementById(name).innerHTML+'">';
  18. }
  19.  
  20. <form method="POST">
  21.  
  22. <table border="1" widht="100%">
  23. <tr onClick="change ('foo1')">
  24. <td width="100%">
  25. <div id="foo1">
  26. tekst 1
  27. </div>
  28. </td>
  29. </tr>
  30. <tr onClick="change ('foo2')">
  31. <td width="100%">
  32. <div id="foo2">
  33. tekst 2
  34. </div>
  35. </td>
  36. </tr>
  37. <tr onClick="change ('foo3')">
  38. <td width="100%">
  39. <div id="foo3">
  40. tekst 3
  41. </div>
  42. </td>
  43. </tr>
  44. <br>
  45. <input type="submit">
  46. </form>
Zajec
Zrobiłem to inaczej, porządniej.

http://zajec.net/dex1987

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  4. <title>Script test</title>
  5. <style type="text/css">
  6. input { display: none; }
  7. </head>
  8.  
  9.  
  10.  
  11. <script type="text/javascript">
  12. var last = false;
  13.  
  14. function change(element) {
  15. if (last)
  16. {
  17. last.getElementsByTagName('div')[0].style.display="block";
  18. last.getElementsByTagName('input')[0].style.display="none";
  19. last.getElementsByTagName('input')[0].value=last.getElementsByTagName('div')[0].innerText;
  20. }
  21. last = element;
  22.  
  23. element.getElementsByTagName('div')[0].style.display="none";
  24. element.getElementsByTagName('input')[0].style.display="block";
  25. }
  26.  
  27.  
  28.  
  29. <form method="POST">
  30.  
  31. <table border="1" widht="100%">
  32. <tr onclick="change(this)">
  33. <td width="100%">
  34. <div>tekst 1</div>
  35. <input name="foo1" type="text" value="tekst1">
  36. </td>
  37. </tr>
  38. <tr onclick="change(this)">
  39. <td width="100%">
  40. <div>tekst 2</div>
  41. <input name="foo2" type="text" value="tekst2">
  42. </td>
  43. </tr>
  44. <br>
  45. <input type="submit">
  46. </form>
  47.  
  48. </body>
  49. </html>





P.S.
Jeśli chodziło Ci o to, aby po zmianie treści inputa zmieniał się również tekst, który pojawia się po zaznaczeniu innego pola, to linijkę:
Kod
last.getElementsByTagName('input')[0].value=last.getElementsByTagName('div')[0].innerText;
zamień na
Kod
last.getElementsByTagName('div')[0].innerText=last.getElementsByTagName('input')[0].value;
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.