![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 1.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Bardzo proszę o pomoc, gdyż już od 2 tygodni staram się znaleźć jakieś rozwiązanie mojego problemu. I jak na razie zlasowałem sobie mózg i nic więcej. Oto opis problemu. Kombinuję stronkę sklepu internetowego. Działanie sklepu oparte jest na ajxie bez żadnej biblioteki w phpie czy js. Jak dotąd szło dobrze, gdybym nie sprawdził jak wygląda to w ie7. Mam taki skrypcik dotyczący koszyka, może nie śmiga jeszcze do końca, ale to dlatego że stanąłem w miejscu przez ten problem. daję w znaczniku php bo jak widzę js nie ma:). Proszę o cierpliwość jestem raczej swieży:) Kod Koszyk = {}; Sprawa w FF wygląda tak że koszyk śmiga. A teraz problem. Otórz pod ie7 w momencie gdy w koszyku już posiadam produkty mam możliwość ich usuwania. Problem pojawia się w tej linijce Kod this.suma_cena = this.suma_cena - del_node.parentNode.childNodes[2].firstChild.nodeValue; gdyż z jakiś powodów i nie wiem skąd ie7 dodaje dodatkowego noda - nodeType = 3(text) z wartością pustą a dokładniej spacją gdyż sprawdziłem charCodeAt(0)=32.Lista produktów w kodzie html czy xhtml wygląda następująco: Jeśli chodzi o wstawianie nowych produktów przez moją funkcję koszyka Koszyk.dodaj() to juz sprawdzałem czy nie ma zbędnych spacji pomiędzy Kod var lista_kosz = "<div id='kosz_prod_" + id_kosz + "'><div>" + this.l_p_kosz + "</div><a href=#kosz_prodid=" + id_kosz + ">" + nazwa_kosz + "</a><div>" + cena_kosz + "</div><div>" + ilosc_kosz + "</div>" + this.usun_prod_ico + "</div>"; i kombinowałem różne inne mozliwości.?> Sytuacja jest taka że w najlepszym podejściu jeśli usuwam produkty po kolei czyli od ostatniego do tego pierwszego na liście to problem sie nie pojawia. Ale nie zawsze. Ale zawsze jest tak że jeśli chce usunąć pierwszy produkt na liście to jest lipton. I zawsze jest tak że wszystkie sie usuną tylko nie pierwszy. Czyli w 90% pierwszy produkt zostaje gdyż ie7 wywala błąd no i zatrzymuje dalsze działanie skryptu który i tak juz by nie śmigał bo w miejscu gdzie nodem powinien być div z ceną pojawia się nie wiadomo skąd nowy node z wartościa spacji. Odpalałem skrypt pod firebugiem i nodów jest tyle ile trzeba. odpalałem pod debugerrem pod ie co się zowie IE Web Developer i co śmieszne on też nie widzi w podglądzie kodu tego pustego noda. Więc ogólnie zgłupiałem. Tyle na ten temat. Proszę o pomoc bo przeszukałem cały internet heheheh i jak na razie to znalazłem milion innych bugów i kombinacji, lecz żadna mi nie pomogła. Pozdrawiam Ten post edytował dziadoo 1.04.2008, 16:27:59 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
nie ma znacznika [ js ] ale jest znacznik [ code ] ...
spróbuj zrobić tak: Kod Koszyk.usun = function(del_node) { var rem_elem = del_node.parentNode.id; var values = del_node.parentNode.getElementsByTagName('div'); this.suma_cena = this.suma_cena - values[1].firstChild.nodeValue; this.suma_ilosc = this.suma_ilosc - values[2].firstChild.nodeValue; document.getElementById("basket").removeChild(document.getElementById(rem_elem)); Koszyk.pokaz_zawartosc(); Koszyk.pokaz_link(); } w ten sposób powinieneś odfiltrować "nody widma" gdyby jednak okazało się, że to values[...].firstChild też zwraca "noda widmo" to zmień jeszcze te dwie linijki: Kod this.suma_cena = this.suma_cena - parseFloat(values[1].innerHTML);
this.suma_ilosc = this.suma_ilosc - parseInt(values[2].innerHTML); Ten post edytował nevt 13.03.2008, 23:13:03 -------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 1.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Już poprawiłęm na code..
Dzięki za pomoc. Tak prosty sposób ale nie wpadłem na to... choć jest to troszkę obejście tematu.. gdyż wcześniej też miałem ten problem ale przerobiłem funkcyjkę i problem zniknął. Więc nasuwa mi się pytanie czy jest jakiś inny sposób żeby ominąć te "nody widma". Tzn jak sobie z nimi radzić gdy nie da się w łatwy sposób ich obejść. Czy winą może być innerHTML, gdyż czytałem gdzieś że nie do końca jest on zgodny ze standardem DOM? Czy może każda z funkcji dotycząca DOM może generować takie widma nody?? Pozdrawiam |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.06.2025 - 12:54 |