ugrás a tartalomhoz

firefox hiba

aspirany · 2008. Júl. 22. (K), 13.39
Sziasztok segítséget szeretnék kérni, az alábbi script IE6 alatt lefut, de firefox hibát ír,a debugban a tömbe elemeit mutatja.

function ajanlat_form()
{
 //ajánlat form elemei
 form_elemek = new Array("sorszam","ugyfelnev","szulhely","szuldatum","irsz","telepules","utca","hazszam","telefon1","telefon2","email","ugynoknev","ugynokkod","levnev");
 form_elemek.push("levirsz","levtelepules","levutca","levhazszam","osszdij");

//ajánlatform termékek
for(z=1;z<=3;z++)
{
  form_elemek.push("tcsaladSelect"+z,"markaSelect"+z,"refszam"+z,"gyariszam"+z,"vasarlasido"+z,"ar"+z,"garevek"+z,"jotallasutolso"+z,"biztkezdete"+z,"biztvege"+z,"biztdij"+z);
}
return form_elemek;//viiszatér a tömb elemeivel
}


//itemId ajanlat_form = megnez,
function nyomtat(itemId)
{
  ajanlat_form();//return tömb ajanlat_form funkcióból "form_elemek"
  var url="";
 
  //végigmegyek a tömb elemein és azt az url válltozóba rakom
  for(i=0; i<form_elemek.length; i++) //itt megkapja a tömböt bent is vannak az elemek
  {
    url += form_elemek[i]+"="+document.getElementById(form_elemek[i]).value+"&"; /itt száll  el
  }


köszi a segítséget
 
1

Scope

bonga · 2008. Júl. 22. (K), 15.37
Nézz már utána, hogy nem ott a bibi, hogy a form_elemek tömb az ajanlat_form() függvény lokális változója, amit return-al visszaad, viszont a nyomtat() függvényben az ajanlat_form() függvényhívás visszatérési értékét nem tárolod másik lokális változóban. Vagyis a nyomtat() függvényben a form_elemek nevű tömb nem létezik és semmi sem tölti fel értékkel.
a) megoldás: tedd globálissá a form_elemek nevű tömböt (a függvényeken kívül definiáld) és azt töltsd fel az ajanlat_form() függvénnyel (ekkor viszont már nem kell bele "return form_elemek;")
b) megoldás: a nyomtat() függvényben az első sor legyen "form_elemei = ajanlat_form();" és utána a form_elemei nevű tömbre hivatkozz.

.bng
2

& és " jel

Poetro · 2008. Júl. 22. (K), 15.38
Próbáld a sor végén levő &-et " helyett '-jelbe tenni.

    url += form_elemek[i] +"="+ document.getElementById(form_elemek[i]).value +'&'; //itt száll el?
3

köszi

aspirany · 2008. Júl. 22. (K), 17.03
Béna voltam a tömben levő pár elemnek a formon nem volt ID-je csak name.

Köszönöm.

de csináltam egy ilyen kódot is:

function form(f) {
var url = "";
for (var n=0; n < f.elements.length; n++) {
url+=f.elements[n].name+"="+f.elements[n].value+"&";
}
alert(url) pár form elem neve kimaradt de a value szerepelt
return url;
}

function xy(form_nev)
{
form(form_nev);
alert(url); nem adott vissza semmit.
}
4

Kipróbáltad?

Poetro · 2008. Júl. 22. (K), 23.24
És kipróbáltad, amit az imént írtam?
6

igen ua

aspirany · 2008. Júl. 23. (Sze), 10.31
kipróbáltam és ua volt a probléma.

egyébkent mikor a másik kóddal próbáltam írtam hogy nem találta meg az elem ID-jét de atartalmat igen.

Nem tudom ismered-e DhtmlX komponenseit, többek között van egy naptár komponens; itt volt a probléma,
Nem választottam ki a dátumot de az adatok jelentkeztek persze ID -név nélül.Ezért csináltama tömböt.
5

IE hiba..

napalm · 2008. Júl. 23. (Sze), 08.23
Ez egy "ismert hiba/feature" Explorerrel kapcsolatban; az elemek "name" tulajdonságát egyben "id" tulajdonságnak is veszi, ha nincs külön "id" megadva.

Firefox (és több böngésző) nem találja meg getElementById()-val az elemeket, ha nincs kifejezetten "id" megadva neki a HTML-ben. Ez nem bug, nem is kell hogy megtalálja. A Suxplorer viszont megtalálja, tehát tesztelés alatt jól fut minden, aztán megnézed mással, akkor ott a probléma.

(Egyébként teljesen hasonló a helyzet az "alt" és a "title" tulajdonsággal. Én is azt hittem először, hogy Firefox hiba, hogy nem jeleníti meg az "alt"-ban leírtakat, míg Explorer igen. Egy másik weblaboros topicban fel is vetettem a témát, és ott is kiderült, hogy Explorer időnként megjelenít azt is amit nem kellene, megtévesztve a fejlesztési fázisban a gyanútlan felhasználót).
7

köszi

aspirany · 2008. Júl. 23. (Sze), 10.31
köszönöm az infót.