function gelosenord(form) {
var siffra = '0123456789';
var bokstav = 'abcdefghijklmnopqrstuvwxyz';
var tecken = '';
var slumpat = []; //kommer innehålla det slumpade tecknen. [] = newArray()
var i = 0;
var fasv = form.antalsiffra.value; // hur många siffror lösenordet skall innehålla
var fav= form.antal.value; //hur många tecken lösenordet skall innehålla
var b = bokstav.length;
var s = siffra.length;
var index = 0;
/*if (fasv > 0) {
slumpat[i++] = siffra.charAt(Math.floor(Math.random()*10));
tecken += siffra;
}
*/
while (i++ <( fav - fasv)) {
slumpat[index++] = bokstav.charAt(Math.floor(Math.random()*b));
}
i=0;
while (i++ < fasv) {
slumpat[index++] = siffra.charAt(Math.floor(Math.random()*s));
}
form.losenord.value = slumpat.join('');
}
Jag satte mig för att försöka fixa detta, och det blev nästan så att jag skrev om det helt och hållet. Håll till godo, och behåll gärna copyright-notisen. Koden nedan funkar iaf utmärkt.
<script type="text/javascript">
// Partly copyright 2006 nitro2k01
String.prototype.getRandomCharFromString=function(){
return this.charAt(parseInt(this.length*Math.random()));
}
function gelosenord(form) {
var siffra = '0123456789';
var bokstav = 'abcdefghijklmnopqrstuvwxyz';
var slumpat = ""; //kommer innehålla det slumpade tecknen.
var i = 0;
var fasv = parseInt(form.antalsiffra.value); // hur många siffror lösenordet skall innehålla
if (!form.antalsiffra.value.length)
fasv=0;
var fav= form.antal.value; //hur många tecken lösenordet skall innehålla
if (isNaN(fav) || fav<1){
alert("Inte ett nummer, ett negativt nummer eller noll angivet i antalet tecken.");
return;
}
if (isNaN(fasv) || fasv<0){
alert("Inte ett nummer eller negativt nummer angivet i antalet siffror.");
return;
}
while(fav--){
if (Math.random()<fasv/fav){// Distribute numbers evenly
slumpat += siffra.getRandomCharFromString();
--fasv;
}else
slumpat += bokstav.getRandomCharFromString();
}
form.losenord.value = slumpat;
}
</script>
Jag satte mig för att försöka fixa detta, och det blev nästan så att jag skrev om det helt och hållet. Håll till godo, och behåll gärna copyright-notisen. Koden nedan funkar iaf utmärkt.
du är snäll du, men jag vill gärna försöka få mitt att funka, tror att jag lär mig bäst på det sätt.
Hoppas att du inte tycker att jag är otacksam
/ptr
du är snäll du, men jag vill gärna försöka få mitt att funka, tror att jag lär mig bäst på det sätt.
Hoppas att du inte tycker att jag är otacksam
/ptr
Ok! Men kolla gärna på den och försök förstå. Du kommer nog lära dig en del på det också.
// lägg till bokstäverna
while (i++ <( fav - fasv)) {
slumpat[index++] = bokstav.charAt(Math.floor(Math.random()*b));
}
// lägg till siffrorna
i = 0;
while (i++ < fasv) {
slumpat[index++] = siffra.charAt(Math.floor(Math.random()*s));
}
Sedan har du den färdiga strängen i slumpat.join('') (t.ex. "abcde012").
Peter, vet inte om jag förstod dig rätt. Är det så här du menar?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Slump</title>
</head>
<script type="text/javascript">
function gelosenord(form) {
var siffra = '0123456789';
var bokstav = 'abcdefghijklmnopqrstuvwxyz';
var tecken = '';
var slumpat = []; //kommer innehålla det slumpade tecknen. [] = newArray()
var i = 0;
var fasv = form.antalsiffra.value; // hur många siffror lösenordet skall innehålla
var fav= form.antal.value; //hur många tecken lösenordet skall innehålla
var b = bokstav.length;
var s = siffra.length;
//lägg till bokstäver
while (i <( fav - fasv)) {
slumpat[i++] = bokstav.charAt(Math.floor(Math.random()*b));
}
//lägg till siffror
while (i < fasv) {
slumpat[i++] = siffra.charAt(Math.floor(Math.random()*s));
}
form.losenord.value = slumpat.join('');
}
</script>
<body>
<h2>Slumpa fram ett lösenord </h2><br />
<br />
<form name="form">
Hur många tecken skall lösenordet innehålla: <input name="antal" type="text" size="5" /><br /> <br />
Hur många siffror skall lösenordet innehålla: <input name="antalsiffra" type="text" size="5" /><br /><br />
<input name="skapa" type="button" value="Slumpa fram lösenordet" onClick="gelosenord(this.form)" /><br />
<br />
<input name="losenord" type="text" size="13" />
</form>
</body>
</html>
function gelosenord(form) {
var siffra = '0123456789';
var bokstav = 'abcdefghijklmnopqrstuvwxyz';
var tecken = '';
var slumpat = []; //kommer innehålla det slumpade tecknen. [] = newArray()
var i = 0;
var fasv = form.antalsiffra.value; // hur många siffror lösenordet skall innehålla
var fav= form.antal.value; //hur många tecken lösenordet skall innehålla
var b = bokstav.length;
var s = siffra.length;
var index = 0;
// kontrollera inputen
// - är fav negativ?
// - är fasv negativ?
// - är fasv > fav?
// lägg till bokstäver
while (i++ <( fav - fasv)) {
slumpat[index++] = bokstav.charAt(Math.floor(Math.random()*b));
}
// lägg till siffror
i=0;
while (i++ < fasv) {
slumpat[index++] = siffra.charAt(Math.floor(Math.random()*s));
}
form.losenord.value = slumpat.join('');
}
Notera gärna kommentarerna i början på funktionen.
// kontrollera inputen
// - är fav negativ?
// - är fasv negativ?
// - är fasv > fav?
Notera gärna kommentarerna i början på funktionen.
fav är positv
fasv är positiv
fasv är alltid större än eller = fav
Men får det fortfande inte att funka
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Slump</title>
</head>
<script type="text/javascript">
var siffra = '0123456789';
var bokstav = 'abcdefghijklmnopqrstuvwxyz';
var tecken = '';
var slumpat = []; //kommer innehålla det slumpade tecknen. [] = newArray()
var i = 0;
var fasv = form.antalsiffra.value; // hur många siffror lösenordet skall innehålla
var fav= form.antal.value; //hur många tecken lösenordet skall innehålla
var b = bokstav.length;
var s = siffra.length;
var index = 0;
// kontrollera inputen
// - är fav negativ?
// - är fasv negativ?
// - är fasv > fav?
// lägg till bokstäver
while (i++ <( fav - fasv)) {
slumpat[index++] = bokstav.charAt(Math.floor(Math.random()*b));
}
// lägg till siffror
i=0;
while (i++ < fasv) {
slumpat[index++] = siffra.charAt(Math.floor(Math.random()*s));
}
form.losenord.value = slumpat.join('');
}</script>
<body>
<h2>Slumpa fram ett lösenord </h2><br />
<br />
<form name="form">
Hur många tecken skall lösenordet innehålla: <input name="antal" type="text" size="5" /><br /> <br />
Hur många siffror skall lösenordet innehålla: <input name="antalsiffra" type="text" size="5" /><br /><br />
<input name="skapa" type="button" value="Slumpa fram lösenordet" onClick="gelosenord(this.form)" /><br />
<br />
<input name="losenord" type="text" size="13" />
</form>
</body>
</html>
så får jag fel
förväntas ett objekt
Ser att du la till index, varför det?
140 ms totalt · 2 externa anrop · v20260731065814-full.2ae45ccc