webForumDet fria alternativet

While vägrar sluta =(

4 svar · 181 visningar · startad av NoiseMaker

NoiseMakerMedlem sedan sep. 2001171 inlägg
#1

Tjenare igen!

Har de senaste 24 timmarna lärt mig mer om javascript än någonsin tidigare i livet =) Kul som fan!

Har lite trassel med While-loopar.. Den inre av de två looparna vägrar avsluta sig. Någon som har en aning om varför?

// Hämtar värde från fält
var color = window.document.form1.hex.value;

//Kontrollerar teckeninnehåll
var i = 0;
var j = 0;
var chars = "1234567890abcdefABCDEF";
var error = true;

chars = chars.split("");
str = color.split("");

while (i < color.length) {
j = 0;

while (j < chars.length) {

if (str *== chars[j]) {
error = false;
}
j++;

}
i++;
}

if(error) {
alert('true')
}

Vore tacksam som fanken för lite expertreflektioner.. =)*

NoiseMakerMedlem sedan sep. 2001171 inlägg
#2

som ett tillägg kan jag berätta att det scriptet skall göra är att kontrollera så att variabeln COLOR enbart innehåller de tecken som anges i variablen CHARS.. hajjar ni.. en typ av validation..

GeinMedlem sedan sep. 20004 849 inlägg
#3

Varför den loopar i all evighet vet jag inte men är inte det där ett fel sätt att validera på?
Jag menar att den inte kommer ge korrekt resultat. Om jag förstår det rätt så kan alla de första tecknena vara fel bara det sista är rätt.

r) Ännu värre ser jag nu. Det räcker med att det är rätt någonstans så valideras hela koden till att vara rätt.

GeinMedlem sedan sep. 20004 849 inlägg
#4

Inte för att jag är speciellt hajj på javascript men detta borde inte vara så svårt så jag försökte. Testa denna kod, funkar kanon för mej iaf. En lite modifierad version av din. Den kollar nu på ett korrekt sätt samt tittar så att inte längden är fel.

	// Hämtar värde från fält
	var color = document.form1.hex.value;

	//Kontrollerar teckeninnehåll
	var i = 0;
	var j = 0;
	var chars = "1234567890abcdefABCDEF";
	var error = false;
	var found = false;

	chars = chars.split("");
	str = color.split("");
	if (color.length != 6) {error = true;}
	while (i < color.length && error == false) {
		j = 0;
		found = false;
		while (j < chars.length) {
			//alert(str[i] + " - " + chars[j]);
			if (str[i] == chars[j]) {
				found = true;
			}
			j++;

		}
		if (found == false){
			error = true;
		}
		i++;
	}

	if(error) {
		alert('Ser inte ut som hex')
	}else{
		alert('Ser okej ut!')
	}

Titta på den och försök förstå vad jag gjorde för ändringar :)

NoiseMakerMedlem sedan sep. 2001171 inlägg
#5

tackar.. hmm.. verkar som om det var en annan efterkommande funktion som fick det hela att strula för mig.. tack ändå =)

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