Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js]Problem ze skryptem pod ie
Forum PHP.pl > Forum > Po stronie przeglądarki
Fixus
Witam...mam taki kod
  1. function makeCheck(thisForm, checkType)
  2. {
  3.  
  4. for(i in thisForm.elements)
  5. {
  6. if(thisForm.elements[i].name.substr(0,6)=='option')
  7. {
  8. thisForm.elements[i].checked=checkType;
  9. }
  10. }
  11. }
  12.  
  13. function makeUncheck(thisForm)
  14. {
  15. for(i in thisForm.elements)
  16. {
  17. if(thisForm.elements[i].name.substr(0,6)=='option')
  18. {
  19. thisForm.elements[i].checked=false;
  20. }
  21. }
  22. }


odwołuje się do funkcji w ten sposób
  1. <input type="button" value="Check All" class="button" onclick="makeCheck(this.form, true)">


Teraz problem polega na tym, że pod FF skrypt działa bardzo dobrze. Klikam, zaznaczają się wszystkie checkboxy i wszyscy są zadowoleni. Jednak pod IE nie działa to wogóle. Nie wiem w czym jest problem, sprawdziłem ustawienia przeglądarki i JavaScript jest napewno włączony. Czy ktoś wie jak temu zaradzić?
webasek
Nie bardzo rozumiem po co to?

this.form

lepiej może użyć nazwy formularza? Może to pomoże? A czy w IE wywala jakiś błąd javascripts? Bo jeśli masz więcej skryptów to nie koniecznie ten jest zły. Poza tym sgeruje zastosowanie alert do sprawdzenia, która linijka sprawia mu problem
Fixus
czyli zamiast: this.form zrobić form.name.nazwaFormularza questionmark.gif

Nie to jest jedyny js na stronie...jedyne co wyświetla na stronie, a raczej an dolny pasku to napis Błąd strony

a jak skutecznie skorzystać z alerta? wystarczy że dam gdziesz alert()? bo gdybym programował jakąś aplikację to bym sprawdził czy wartość logiczna funkcji wynosi true jeśli nie to zwrócił komunikat, ale nie wiem jak to zrobić w js tongue.gif
kevinsz
Z tego co wiem, to IE ma problemy z tą linijką
  1. for(i in thisForm.elements)


Wystarczy zmienić na
  1. for(i = 0; i < thisForm.elements.length; i++)
webasek
Kliknij tam gdzie pisze błąd w ie i zobaczysz która linijka nawala co do alerta to po prostu wstawiaj alert('tutaj'); po kazdej linii ale po kolei najpierw na początku itd... jeśli nie pójdzie od razu to kasuj najpierw wszystkie linie z kodu i dodawaj po jednej w ten sposób dojdziesz gdzie błąd.

Nie użyj tego tak document.nazwaformularza.elements ...

lub document.nazwaformularza.nazwapola ...
Fixus
kevinsz poskutkowało. Wielkie dzięki. Webasek też dzięki za rady
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.