Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobranie najwięszego ID z form
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
tmk
Witam, mam formularz, w którym są inputy. Każdy z nich ma id, pokolei id=1, id=2 itd...

Potrzebuję funkcję, która mi poda największe id występujące w inputach.
Macie jakiś pomysł jak możnaby to rozwiązać?
nospor
  1. <input type="text" id="1" />
  2. <input type="text" id="2" />
  3. <input type="text" id="3" />
  4. <input type="text" id="4" />
  5.  
  6. <button onclick="getMaxValue();">licz</button>
  7. <script language="javascript">
  8. function getMaxValue()
  9. {
  10. i = 1;
  11. maxI = null; maxValue=null;
  12. while (true){
  13. obj = document.getElementById(i);
  14. if (!obj) break;
  15. if (maxValue == null || obj.value > maxValue)
  16. {
  17. maxValue = obj.value;
  18. maxI = i;
  19. }
  20. i++;
  21. }
  22.  
  23. alert('MaxValue: '+maxValue+' dla id='+maxI);
  24. }
tmk
Dzięki..
ale wyrzuca mnie na pierwszej pętli w break, czyli spełnia warunek
Kod
if(!obj) break;


i podaje, ze max jest id=1
nospor
a wstawiles moj kod? inputy mają id=1, 2? Bo najwyrazniej nie znalazl takiego inputa
tmk
Sprawdz to na takim pliku:
  1. <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=iso-8859-2">
  2. </HEAD>
  3.  
  4. <script language="javascript">
  5. function getMaxValue(){
  6. i = 1;
  7. maxI = null;
  8. maxValue=null;
  9.  
  10. while (true){
  11. obj = document.getElementById(i);
  12. if (!obj){
  13. alert("nie obj");
  14. break;
  15. }
  16. if (maxValue == null || obj.value > maxValue){
  17. maxValue = obj.value;
  18. maxI = i;
  19. }
  20. i++;
  21. }
  22.  
  23. alert('MaxValue: '+maxValue+' dla id='+maxI);
  24. }
  25. <FORM action="obsluga.php" method="post">
  26. <input type="text" id="1" name="cosa" /><BR>
  27. <input type="text" id="2" name="coss" /><BR>
  28. <input type="text" id="3" name="cosaa" /><BR>
  29. <button onclick="getMaxValue();">Pokaż Max</button><BR>
  30. <input type="submit" value=" Klikaj Pan !! !! ">
  31. </FORM>
  32.  
  33. </BODY>
  34. </HTML>


i wyskakuje z while na if(!obj)

Jak na początku (przed pętlą) się zrobi
  1. obj = document.getElementById("1");

to znajduje obiekt, czyli tu problem jest w tym , że w pętli jest na przykład
  1. getElementById(1);
a nie
  1. getElementById("1");

da się tam jakoś te "" wkleić?
nospor
Nie wiem na czym to testowales, ale mi dziala bez zarzutu. Testowalem na operze i na badzIEwiu. tobie wiec pozostaje ff winksmiley.jpg

JAk chcesz miec "i" jako stringa to daj tak:
Kod
obj = document.getElementById(i.toString());
tmk
wprowadziłęm zmianę:
  1. if (maxI == null || obj.id > maxI){
  2. maxValue = obj.value;
  3. maxI = i;
  4. }


i teraz jest OK

dzięki smile.gif
nospor
no ale Twoja zmiana będzie wyszukiwalo inputa z największym id a nie z najwiekszą wartością. Jaki tego sens? Skoro chcesz miec największe id, to od razu wpisz se ostatnie, bez sprawdzania zadnych warunkow.
tmk
Jeśli wcześniej nejasno napisałem, to sory. Potrzebuję największego inputa, poniewaz muszę mieć możliwośc dynamicznego dodawania inputów, usuwania itp..w wybranych miejsach, wieć ostatni nie rozwiązuje problemu..
nospor
no ale to ty nie wiesz ile masz inputów? nawet jak dynamicznie je dodajesz to chyba powinienies wiedziec...

No ale skoro jednak nie wiesz to trzeba przerobic tylko tamten kod:
Kod
function getMaxId(){
i = 1;

while (true){
obj = document.getElementById(i);
if (!obj){
i--;
break;
}
i++;
}

alert('MaxId: '+i);
}
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.