Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zmiana wartości w poszczególnych komórkach
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Barcelona
Witam, mam tabelkę oraz kod JS, dzięki któremu jestem w stanie zmienić wartości znajdujące się w komórkach. Jednak działa on na wszystkich komórkach. Chciałbym tą operację wykonywać na poszczególnych komórkach, np. o id:zmiana

Tabelka

  1. <table border="1" id="s" width="100%">
  2. <tr class="google-visualization-table-tr-head">
  3. <td class="sortowanie">Lp.</td>
  4. <td class="sortowanie">Nazwa</td>
  5. <td class="sortowanie"> Data dodania </td>
  6. <td class="sortowanie"> CENA PLN</td>
  7. <td class="sortowanie"> Firma </td>
  8. </tr>
  9. <tr class="google-visualization-table-tr-odd">
  10. <td>1</td>
  11. <td>Telewizor Plazmowy</td>
  12. <td>23-04-2007</td>
  13. <td>8000</td>
  14. <td>Sony</td>
  15. </tr>
  16. <tr>
  17. <td>2</td>
  18. <td>Laptop</td>
  19. <td>24-04-2007</td>
  20. <td>3000</td>
  21. <td>Lenovo</td>
  22. </tr>
  23. <tr>
  24. <td>3</td>
  25. <td>Lodówka</td>
  26. <td>25-04-2007</td>
  27. <td>1100</td>
  28. <td>Polar</td>
  29. </tr>
  30. <tr>
  31. <td>4</td>
  32. <td>Monitor</td>
  33. <td>26-04-2007</td>
  34. <td>800</td>
  35. <td>Samsung</td>
  36. </tr>
  37. <tr>
  38. <td>5</td>
  39. <td>Odtwarzacz DVD</td>
  40. <td>27-05-2007</td>
  41. <td>838.44</td>
  42. <td>Sony</td>
  43. </tr>
  44. <tr>
  45. <td>6</td>
  46. <td>Odtwarzacz DVD</td>
  47. <td>28-05-2007</td>
  48. <td>838.99</td>
  49. <td>Panasonic</td>
  50. </tr>
  51. <tr>
  52. <td>7</td>
  53. <td>Płyta DVD-RW</td>
  54. <td>29-05-2007</td>
  55. <td>3.24</td>
  56. <td>Samsung</td>
  57. </tr>
  58. <tr>
  59. <td>8</td>
  60. <td>Płyta DVD-RW</td>
  61. <td>27-05-2007</td>
  62. <td>3.44</td>
  63. <td>Sony</td>
  64. </tr>
  65. <tr>
  66. <td>9</td>
  67. <td>Płyta DVD</td>
  68. <td>28-05-2007</td>
  69. <td>2.20</td>
  70. <td>Panasonic</td>
  71. </tr>
  72. <tr>
  73. <td>10</td>
  74. <td>Płyta DVD</td>
  75. <td>29-05-2007</td>
  76. <td>2.30</td>
  77. <td>Samsung</td>
  78. </tr>


a to kod JS

[JAVASCRIPT] pobierz, plaintext
  1.  
  2. onload=function()
  3. {
  4. for(var i=0,TR; TR=document.getElementsByTagName('tr')[i++];) //wiersze
  5. {
  6. for(var j=0,TD; TD=TR.getElementsByTagName('td')[j];j++) //kratki
  7. {
  8. if(TD.className=='sortowanie')
  9. {
  10. TD.numer=j; //nadawanie parametru numer
  11. TD.klikniety=0;
  12. TD.onclick=function(){ klikniety(this); sort(this.numer,this);} //nadawanie akcji Onclick
  13. TD.onmouseover=function(){ kolor(this,1) };
  14. TD.onmouseout=function(){ kolor(this,2) };
  15. }
  16. else
  17. {
  18. TD.onclick=function() { zmien_wartosc(this); } //mozliwosc zmiany wartosci pola
  19. }
  20. }
  21. }
  22. }
  23.  
  24. function kolor(obj,typ)
  25. {
  26. if(typ==1 && obj.klikniety==0);
  27. if(typ==2 && obj.klikniety==0);
  28. }
  29.  
  30. function zmien_wartosc(obj)
  31. {
  32. if(confirm("Czy chcesz zmienic wartosc tego pola ? \r\n("+obj.innerHTML+") ?"))
  33. {
  34. var zmiana=prompt("Zmien wartosc tego pola z : "+obj.innerHTML,"");
  35. if(zmiana=="") { alert("Pole nie uległo zmianie"); }
  36. else
  37. {
  38. alert("Wartosc usunieta : "+obj.innerHTML+"\r\nNowa wartosc : "+zmiana);
  39. obj.innerHTML=zmiana;
  40. }
  41. }
  42. }
  43.  
  44. var lastClick=new Object();
  45.  
  46. function klikniety(obj)
  47. {
  48. if(lastClick.klikniety==2 || (lastClick.klikniety==1 && obj.klikniety==0)){ lastClick.style.background="red"; lastClick.klikniety=0; }
  49. if(obj.klikniety==1) { obj.style.background="lightblue"; obj.klikniety=2; obj.znak=1;}
  50. if(obj.klikniety==0) { obj.style.background="blue"; obj.klikniety=1; obj.znak=-1; }
  51. lastClick=obj;
  52. }
  53.  
  54. function sort(numer,Obiekt)
  55. {
  56. // w ktorym kierunku ma sortowac od dolu czy od gory
  57. (Obiekt.znak>0) ? (Obiekt.znak=-1) : (Obiekt.znak=1);
  58. var TBODYobj=Obiekt.parentNode.parentNode.parentNode.getElementsByTagName('tbody')[0];
  59. var c=new Array();
  60. for(var i=0,TRobj; TRobj=TBODYobj.getElementsByTagName('tr')[i]; i++)
  61. {
  62. c[i]=[]; //pierwszy wymiar tablicy
  63. for(var j=0;TDobj=TRobj.getElementsByTagName('td')[j];j++)
  64. {
  65. c[i][j]=TDobj.innerHTML; /*lub firstChild.data zamiast innerHTML*/;
  66. }
  67. }
  68.  
  69. /*po zmiennej numer poznaje kolumne ktora ma sortowac */
  70. /*zmienna znak natomiast powoduje ze sortowanie moze byc ascending lub descending */
  71.  
  72. c.sort( function (a,B){ return Sprawdz(a[numer],b[numer]) ? Obiekt.znak : (-Obiekt.znak) } );
  73.  
  74. //sortowanie za pomoca zdefiniowanej funkcji
  75. for(var i=0,TRobj;TRobj=TBODYobj.getElementsByTagName('tr')[i];i++)
  76. {
  77. for(var j=0;TDobj=TRobj.getElementsByTagName('td')[j];)
  78. {
  79. TDobj.innerHTML=c[i][j++]; /*lub firstChild.data zamiast innerHTML*/;
  80. }
  81. }
  82. }
  83.  
  84. /* Uwaga Stosujac InnerHTML mozna spowodowac bledy w niektorych przegladarkach internetowych */
  85.  
  86. function Sprawdz(x,y) //funkcja sprawdzajaca czy element X ma byc nad elementem Y
  87. {
  88. var r=/^[0-9\.]+$/i;
  89. var HTMLreg=/<.*?>/i;
  90.  
  91. //-----usuwa kod HTML ze srodka tagow aby nie zaburzal sortowania
  92. x+=''; y+='';
  93. x=x.replace(HTMLreg,'');
  94. y=y.replace(HTMLreg,'');
  95.  
  96. //--- bierze pod uwage tylko znaki alfabetu i cyfry przy sortowaniu
  97.  
  98. if(x.matchŸ && y.matchŸ) //sortowanie liczb
  99. {
  100. //document.write(x+' '+y);
  101. if(parseFloat(x)>parseFloat(y)) return true;
  102. else return false;
  103. }
  104. // sortowanie znakow
  105. if (x>y) return true;
  106. else return false;
  107. }
[JAVASCRIPT] pobierz, plaintext


Ok, już sobie odpowiadam smile.gif

[JAVASCRIPT] pobierz, plaintext
  1. onload=function()
  2. {
  3. for(var i=0,TR; TR=document.getElementsByTagName('tr')[i++];) //wiersze
  4. {
  5. for(var j=0,TD; TD=TR.getElementsByTagName('td')[j];j++) //kratki
  6. {
  7. if(TD.className=='sortowanie')
  8. {
  9. TD.numer=j; //nadawanie parametru numer
  10. TD.klikniety=0;
  11. TD.onclick=function(){ klikniety(this); sort(this.numer,this);} //nadawanie akcji Onclick
  12. TD.onmouseover=function(){ kolor(this,1) };
  13. TD.onmouseout=function(){ kolor(this,2) };
  14. }
  15. else if(TD.className=='zmiana')
  16. {
  17. TD.onclick=function() { zmien_wartosc(this); } //mozliwosc zmiany wartosci pola
  18. }
  19. }
  20. }
  21. }
  22.  
  23. function kolor(obj,typ)
  24. {
  25. if(typ==1 && obj.klikniety==0);
  26. if(typ==2 && obj.klikniety==0);
  27. }
  28.  
  29. function zmien_wartosc(obj)
  30. {
  31. if(confirm("Czy chcesz zmienic wartosc tego pola ? \r\n("+obj.innerHTML+") ?"))
  32. {
  33. var zmiana=prompt("Zmien wartosc tego pola z : "+obj.innerHTML,"");
  34. if(zmiana=="") { alert("Pole nie uległo zmianie"); }
  35. else
  36. {
  37. alert("Wartosc usunieta : "+obj.innerHTML+"\r\nNowa wartosc : "+zmiana);
  38. obj.innerHTML=zmiana;
  39. }
  40. }
  41. }
  42.  
  43. var lastClick=new Object();
  44.  
  45. function klikniety(obj)
  46. {
  47. if(lastClick.klikniety==2 || (lastClick.klikniety==1 && obj.klikniety==0)){ lastClick.style.background="red"; lastClick.klikniety=0; }
  48. if(obj.klikniety==1) { obj.style.background="lightblue"; obj.klikniety=2; obj.znak=1;}
  49. if(obj.klikniety==0) { obj.style.background="blue"; obj.klikniety=1; obj.znak=-1; }
  50. lastClick=obj;
  51. }
  52.  
  53. function sort(numer,Obiekt)
  54. {
  55. // w ktorym kierunku ma sortowac od dolu czy od gory
  56. (Obiekt.znak>0) ? (Obiekt.znak=-1) : (Obiekt.znak=1);
  57. var TBODYobj=Obiekt.parentNode.parentNode.parentNode.getElementsByTagName('tbody')[0];
  58. var c=new Array();
  59. for(var i=0,TRobj; TRobj=TBODYobj.getElementsByTagName('tr')[i]; i++)
  60. {
  61. c[i]=[]; //pierwszy wymiar tablicy
  62. for(var j=0;TDobj=TRobj.getElementsByTagName('td')[j];j++)
  63. {
  64. c[i][j]=TDobj.innerHTML; /*lub firstChild.data zamiast innerHTML*/;
  65. }
  66. }
  67.  
  68. /*po zmiennej numer poznaje kolumne ktora ma sortowac */
  69. /*zmienna znak natomiast powoduje ze sortowanie moze byc ascending lub descending */
  70.  
  71. c.sort( function (a,B){ return Sprawdz(a[numer],b[numer]) ? Obiekt.znak : (-Obiekt.znak) } );
  72.  
  73. //sortowanie za pomoca zdefiniowanej funkcji
  74. for(var i=0,TRobj;TRobj=TBODYobj.getElementsByTagName('tr')[i];i++)
  75. {
  76. for(var j=0;TDobj=TRobj.getElementsByTagName('td')[j];)
  77. {
  78. TDobj.innerHTML=c[i][j++]; /*lub firstChild.data zamiast innerHTML*/;
  79. }
  80. }
  81. }
  82.  
  83. /* Uwaga Stosujac InnerHTML mozna spowodowac bledy w niektorych przegladarkach internetowych */
  84.  
  85. function Sprawdz(x,y) //funkcja sprawdzajaca czy element X ma byc nad elementem Y
  86. {
  87. var r=/^[0-9\.]+$/i;
  88. var HTMLreg=/<.*?>/i;
  89.  
  90. //-----usuwa kod HTML ze srodka tagow aby nie zaburzal sortowania
  91. x+=''; y+='';
  92. x=x.replace(HTMLreg,'');
  93. y=y.replace(HTMLreg,'');
  94.  
  95. //--- bierze pod uwage tylko znaki alfabetu i cyfry przy sortowaniu
  96.  
  97. if(x.matchŸ && y.matchŸ) //sortowanie liczb
  98. {
  99. //document.write(x+' '+y);
  100. if(parseFloat(x)>parseFloat(y)) return true;
  101. else return false;
  102. }
  103. // sortowanie znakow
  104. if (x>y) return true;
  105. else return false;
  106. }
[JAVASCRIPT] pobierz, plaintext


A w tabeli w komórce gdzie ma być aktywna zmiana wartości trzeba nadać class="zmiana"

Proste smile.gif
krowal
[JAVASCRIPT] pobierz, plaintext
  1. var td = document.getElementById('zmiana');
  2. zmien_wartosc(td);
  3.  
  4. //w funkcji zmien_wartosc zmień:
  5. alert("Wartosc usunieta : "+obj.innerHTML+"\r\nNowa wartosc : "+zmiana);
  6. obj.innerHTML=zmiana;
  7. //w tym miejscu dodaj:
  8. obj.className += ' zmiana';
[JAVASCRIPT] pobierz, plaintext

O to chodziło ?
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.