webForumDet fria alternativet

Göra JavaScript enklare???

3 svar · 136 visningar · startad av Fredriksson

FredrikssonMedlem sedan nov. 2000271 inlägg
#1

Har gjort följande javascript.


function b_moveIt(x,y){
	this.x=x; this.y=y;
	this.css.left=this.x
	this.css.top=this.y;
if(this==oDrag[0]){
	document.Form1.toplagerid0.value = y;
	document.Form1.leftlagerid0.value = x;
	}
if(this==oDrag[1]){
	document.Form1.leftlagerid1.value = x;
	document.Form1.toplagerid1.value = y;
	}
if(this==oDrag[2]){
	document.Form1.leftlagerid2.value = x;
	document.Form1.toplagerid2.value = y;
	}
if(this==oDrag[3]){
	document.Form1.leftlagerid3.value = x;
	document.Form1.toplagerid3.value = y;
	}
if(this==oDrag[4]){
	document.Form1.leftlagerid4.value = x;
	document.Form1.toplagerid4.value = y;
	}
if(this==oDrag[5]){
	document.Form1.leftlagerid5.value = x;
	document.Form1.toplagerid5.value = y;
	}
if(this==oDrag[6]){
	document.Form1.leftlagerid6.value = x;
	document.Form1.toplagerid6.value = y;
	}
if(this==oDrag[7]){
	document.Form1.leftlagerid7.value = x;
	document.Form1.toplagerid7.value = y;
	}

Koden används för att man skall kunna dra och placera ut lager där man vill ha dem och så att deras placering sedan kan lagras i en databas.

Men det blir fler och fler lager och då mina if-satser lite jobbiga i längden. Nån som vet något bättre sätt att uppnå samma resultat???

------------------
// Fredriksson

annoMedlem sedan nov. 2000196 inlägg
#2

Ingen expert på JavaScript men jag tycker man borde kunna göra något sånt här...

for (i=0; i<7; i++) {
   if(this==oDrag[i]){
      document.Form1.toplagerid[i].value = y;
      document.Form1.leftlagerid[i].value = x;
   }
}

------------------
/Andreas

FredrikssonMedlem sedan nov. 2000271 inlägg
#3

Resultat:

document.Form1.toplagerid är inte ett objekt.

Formfälten som värdena skall sparas i:

<form name="Form1" method="post" action="nyindex.php3">

<input type="hidden" name="nysatt" value="1">

<input type="text" name="toplagerid0" value="$GLOBALS[toplagerid0]">
<input type="text" name="leftlagerid0" value="$GLOBALS[leftlagerid0]">
<input type="text" name="toplagerid1" value="$GLOBALS[toplagerid1]">
<input type="text" name="leftlagerid1" value="$GLOBALS[leftlagerid1]">
<input type="text" name="toplagerid2" value="$GLOBALS[toplagerid2]">
<input type="text" name="leftlagerid2" value="$GLOBALS[leftlagerid2]">
<input type="text" name="toplagerid3" value="$GLOBALS[toplagerid3]">
<input type="text" name="leftlagerid3" value="$GLOBALS[leftlagerid3]">
<input type="text" name="toplagerid4" value="$GLOBALS[toplagerid4]">
<input type="text" name="leftlagerid4" value="$GLOBALS[leftlagerid4]">
<input type="text" name="toplagerid5" value="$GLOBALS[toplagerid5]">
<input type="text" name="leftlagerid5" value="$GLOBALS[leftlagerid5]">
<input type="text" name="toplagerid6" value="$GLOBALS[toplagerid6]">
<input type="text" name="leftlagerid6" value="$GLOBALS[leftlagerid6]">
<input type="text" name="toplagerid7" value="$GLOBALS[toplagerid7]">
<input type="text" name="leftlagerid7" value="$GLOBALS[leftlagerid7]">

Vad kan det vara för fel???

------------------
// Fredriksson

ZaphodMedlem sedan maj 2000102 inlägg
#4

Annon, du glömmer att leftlagerid inte är en Array!

for (i=0; i<7; i++) {
if(this==oDrag){
eval("document.Form1.toplagerid"+i+".value = y");
eval("document.Form1.leftlagerid"+i+".value = x");
}
}

Man kan lösa det på smidigare sätt dock med elements. Men detta borde funka.

------------------
/Magnus aka Zaphod
www.designmodule.com

Genererad på 389 ms · cache AV · v20260730165559-full.f96bc7eb