Just nu i M3-nätverket
Jump to content

Fungerar bra i IE, inte i FF


Sasja

Recommended Posts

Varför fungerar detta script i IE men inte i FF? Vad gör scriptet? Det är två rullgardinsmenyer med ett antal alternativ som är likadana i båda. JavaScriptet ska förhindra att de båda rullgardinsmenyerna har samma alternativ.

 

I FF händer ingenting när jag väljer samma alternativ, i IE fungerar det utmärkt!

 

<SCRIPT LANGUAGE="JavaScript">

<!--
function letadubblar(knappnamn) {

if (top.formName.vba.options.value == top.formName.hba.options.value) {
knappnamn.options[1].selected = true;
}
}
-->

</SCRIPT>
<form method="POST" name="formName">

<select size="1" name="vba" onChange="letadubblar(this)">
   <option value="A">A</option>
   <option value=""></option>
   <option value="B">B</option>
   <option value="C">C</option>
</select>

<select size="1" name="hba" onChange="letadubblar(this)">
   <option value="B">B</option>
   <option value=""></option>
   <option value="A">A</option>
   <option value="C">C</option>
</select> 

</form>

 

[inlägget ändrat 2006-01-06 20:35:53 av Sasja]

Link to comment
Share on other sites

Koden var väldigt inkorrekt. Att den fungerar i IE beror på att IE tillåter nästan vad som helst att köra =)

 

Ändra funktionen till:

function letadubblar(knappnamn) {
o1=document.getElementsByName("vba")[0];
v1=o1.options[o1.selectedIndex].value;
o2=document.getElementsByName("hba")[0];
v2=o2.options[o2.selectedIndex].value;
if (v1==v2) knappnamn.selectedIndex=1;
}

 

Link to comment
Share on other sites

Rackarns, det blev lite extra kod det... Jag kan ingenting om JavaScript, kör bara på känsla! Så sällan man behöver det... tycker jag.

 

Jag har ett tiotal rullgarindsmenyer som jag tänkt kontrollera med JavaScript om de innehåller likadana värden likt den funktion du skrev just.

 

Hur löser jag detta på smidigast sätt? Poäng given till smidigt svar!

 

Link to comment
Share on other sites

Här kommer en funktion för x antal selects (vars namn-attribut du lägger i arrayen arrSel)

 

var arrSel=new Array('vba','hba','cba');

function EnsureUnique(oSel) {
blValueExists=false;
sMyValue=oSel.options[oSel.selectedIndex].value;
for (i=0;i<arrSel.length;i++) {
	o=document.getElementsByName(arrSel[i])[0];
	sCompareValue=o.options[o.selectedIndex].value;
	blValueExists|=(o!=oSel && sMyValue==sCompareValue);
}
if (blValueExists) oSel.selectedIndex=1;
}

 

[inlägget ändrat 2006-01-06 21:04:09 av Anjuna Moon]

Link to comment
Share on other sites

Oj, fi *** vad smidigt!!!

 

Skulle jag kunne ge dig fler än en poäng för det inlägget så skulle jag. Tack!!! Hur kommer det sig att du behärskar JavaScript så väl?

 

Link to comment
Share on other sites

Hur kommer det sig att du behärskar JavaScript så väl?

Jobbade med webbutveckling i en 7 år sådär innan jag gick över helt till utveckling av windowapplikationer. Hade varit trist om jag inte plockat upp en och annan "skill" under de åren =)

 

Tack för poängen.

 

Link to comment
Share on other sites

Själv önskar man att man kunde JavaScript så väl... men man har inte tid att lära sig något bra som man använder så sällan. Men man kan göra mycket häftiga saker med det, har du gjort nå Ajax-grejjer?

 

Edit: För det är väl JavaScript man kör med i Ajax?

[inlägget ändrat 2006-01-06 21:15:01 av Sasja]

Link to comment
Share on other sites

har du gjort nå Ajax-grejjer?

Edit: För det är väl JavaScript man kör med i Ajax?

Jo precis, tillsammans med XMLHttpRequest. Nä, det dök aldrig upp några projekt som krävde denna teknik, men den är mycket intressant. Kan tänka mig att leka med den lite för skojs skull.

 

[inlägget ändrat 2006-01-06 21:23:20 av Anjuna Moon]

Link to comment
Share on other sites

Mr Andersson
Jobbade med webbutveckling i en 7 år sådär innan jag gick över helt till utveckling av windowapplikationer

 

Intressant. Varför göra en sån omvändning, som jag ser det, går utvecklingen det motsatta hållet, dvs det blir mer och mer webapplikationer och färre "vanliga" program...?

 

Jag själv har gjort så och se tydliga tecken från kunder på att det är så. Något jag missat...?

 

 

 

Link to comment
Share on other sites

Nja, vi har fortfarande webbutveckling på agendan, men jag själv utvecklar inte på den sidan längre (nästan inget iallafall). Vi jobbar med användarundersökningar och statistisk analys, och under ett samarbete med Temo upptäckte vi hur utdaterat deras gamla system var. Resultatet blev ett extensivt projekt som pågick i flera år, där vi utvecklade ett nytt system från grunden åt dem.

 

Numer sitter jag med ett inhouse-projekt för statistisk analys, administration av våra undersökningar och rapportproduktion.

 

Allt går inte att göra med webben =)

 

[inlägget ändrat 2006-01-07 01:13:47 av Anjuna Moon]

Link to comment
Share on other sites

Om man nu vill skapa ytterligare en rullgardinsmeny som har endast de alternativ som alla de andra rullgardinsmenyerna har för tillfället. Hur gör man då smidigast?

 

Given poängutdelning till svar som löser meine probleme!

 

Link to comment
Share on other sites

Hur menar du? Om menyerna 1-5 har valda värden "a","b","c","d","e" så vill du att den sjätte kombon dynamiskt skall ändras till att bara innehålla dessa alternativ?

 

Link to comment
Share on other sites

Ok, ny funktion. Anropa den i slutet av den tidigare funktionen. Den förutsätter att selecten heter "other":

 

function LoadAlternatives() {
oSel=document.getElementsByName('other')[0];
nCnt=oSel.options.length;
for (i=0;i<=nCnt;i++) oSel.options.remove(0);
for (i=0;i<arrSel.length;i++) {
	o=document.getElementsByName(arrSel[i])[0]
	o=o.options[o.selectedIndex];
	oSel.options.add(new Option(o.text,o.value));
}
}

 

Link to comment
Share on other sites

Hur ska jag göra nu?

 

Jag stoppar in LoadAlternatives(); sist i funktionen EnsureUnique. Stoppar in en rullgardin typ:

<select name="other"></select>

 

Samt stoppar in LoadAlternatives()-koden förståss... det fungerar inte, vad har jag bommat?

 

 

 

Link to comment
Share on other sites

My bad. Tredje raden skall vara

for (i=0;i<=nCnt;i++) oSel.remove(0);

 

Hoppas det funkar nu, för nu ska jag ut på en liten ölrunda. Kollar av tråden imorgon.

 

Link to comment
Share on other sites

Fungerara alldeles utmärkt! Däremot vill jag att scriptet ska köras direkt när sidan laddas. Man brukar väl då stoppa ett unLoad-attribut i body-taggen? Nu är det så illa att jag inte kan göra det då body-taggen ligger i en include-fil som är generell för samtliga sidor. Kan det lösas på något annat sätt?

 

Link to comment
Share on other sites

Kan det lösas på något annat sätt?

Tja, du kan ju lägga in ett anrop till funktionen längst ned på sidan, precis innan </html>

 

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...