Avatar billede herberth Juniormester
12. marts 2003 - 22:23 Der er 3 kommentarer og
1 løsning

Udvidelse af koden

Kære eksperter

Jeg har nedenstående kode som virker fint - den returnere et tal mellem 1-9 der beregnes på baggrund af dit navn. Hvert bogstav i alfabetet er nemlig knyttet til et tal: A=1 B=2 etc.

Nu vil jeg gerne have udvidet koden så den også returnere det tal man får hvis man kun tæller værdierne for konsonanterne og vokalerne i dit navn sammen.

Altså skal outputtet være følgende:
Dit navnetal = X (Det virker fint lige nu)
Dit vokaltal = X (Det skal tilføjes)
Dit konsonanttal = X (Det skal også tilføjes)

Jeg er ikke på jagt efter hele koden - bare starten herpå er fin så skal jeg nok selv færdiggøre det.

Her er min nuværende kode - som altså fungere fint og som returnere svaret : Dit navnetal er X.

<html>

<head>
<title>Peter</title>
<script>

var sum=0;

function beregn(){
var ntal=0;
var navn=document.ph.indhold.value;
//toUpperCase();
navn=navn.toLowerCase();
for(i=0;i<navn.length;i++){
var ch=navn.charAt(i);

if(ch=="a" || ch=="j" || ch=="s" || ch=="ø"){
document.ph.temp.value=document.ph.temp.value+"1 <<- ";
ntal=ntal+1;
}

if(ch=="b" || ch=="k" || ch=="t" || ch=="å"){
document.ph.temp.value=document.ph.temp.value+"1 <<- ";
ntal=ntal+2;
}

if(ch=="c" || ch=="l" || ch=="u"){
document.ph.temp.value=document.ph.temp.value+"1 <<- ";
ntal=ntal+3;
}

if(ch=="d" || ch=="m" || ch=="v"){
document.ph.temp.value=document.ph.temp.value+"1 <<- ";
ntal=ntal+4;
}

if(ch=="e" || ch=="n" || ch=="w"){
document.ph.temp.value=document.ph.temp.value+"1 <<- ";
ntal=ntal+5;
}

if(ch=="f" || ch=="o" || ch=="x"){
document.ph.temp.value=document.ph.temp.value+"1 <<- ";
ntal=ntal+6;
}

if(ch=="g" || ch=="p" || ch=="y"){
document.ph.temp.value=document.ph.temp.value+"1 <<- ";
ntal=ntal+7;
}


if(ch=="h" || ch=="q" || ch=="z"){
document.ph.temp.value=document.ph.temp.value+"1 <<- ";
ntal=ntal+8;
}

if(ch=="i" || ch=="r" || ch=="æ"){
document.ph.temp.value=document.ph.temp.value+"1 <<- ";
ntal=ntal+9;
}

document.ph.temp.value=ntal;

//document.ph.indhold.value="dd";
}
var deltot=0;
tal1=Math.floor(ntal/100);
//alert(tal1);
//deltot=deltot+deltal;
//ntal=ntal-100;

tal2=Math.floor((ntal-(tal1*100))/10);
//deltot=deltot+deltal;
//ntal=ntal-10;
//alert(tal2);
tal3=Math.floor((ntal-(tal1*100)-(tal2*10))/1);
deltot=tal1+tal2+tal3;
if(deltot>9){
tal4=Math.floor(deltot/10);
//alert(tal4)
tal5=Math.floor((deltot-(tal4*10))/1);
//alert(tal5)
deltot=tal4+tal5;
}

//alert(tal3);
document.ph.temp.value=deltot;
return false;

}

function tvarsum(n){
var tallet=n;
tallet=tallet+"";
sum=0;

for(j=0;j<tallet.length;j++){
var nytal=parseInt(tallet.charAt(j));
sum=sum+nytal;
}

}

function beregn2(){
var tal=document.ph2.indhold.value;
tvarsum(tal);
if(sum>9){
tvarsum(sum);
}

document.ph2.temp.value=sum

}
</script>
</head>

<body bgcolor="#FFFFFF">

<p><br>
Indtast dit navn:<br>
</p>

<form name="ph" onSubmit="beregn();return false;">
  <p><input type="text" name="indhold" size="25"><br>
  <br>
  Dit navns tal:<br>
  <br>
  <input type="text" name="temp" size="2"> <br>
  <br>
  <input type="submit" value="Beregn"> </p>
</form>

<p><br>
</p>
</body>
</html>
Avatar billede jakobclausen Nybegynder
12. marts 2003 - 22:32 #1
(1) Split linierne op:

if(ch=="a" || ch=="j" || ch=="s" || ch=="ø"){
document.ph.temp.value=document.ph.temp.value+"1 <<- ";
ntal=ntal+1;
}
- så du laver ovenstående if-sætning for både a, j og ø (og lige sådan ved de andre)

(2) Opret en variabel der hedder "vokal" og en anden der hedder "konsonant"
(3) I if-sætningen for dit a,e,i etc. (vokal) ligger det tallet til vokal-variable

I if-sætningen for b,c,d,f etc. (konsonat) ligger det tallet til konsonant-variablen
Avatar billede olebole Juniormester
12. marts 2003 - 23:23 #2
<ole>

Du kan også 'sexe' din beregn-funktions første del gevaldigt op:

function beregn() {
    var ntal=0;
    var f = document.ph;
    var navn = f.indhold.value.toLowerCase();
    var chrs = new Array( "ajsø","bktå","clu","dmv","enw","fox","gpy","hqz","iræ" );
    for(i=0; i<navn.length; i++) {
        var ch = navn.charAt(i);
        for (j=0; j<chrs.length; j++) {
            if (chrs[j].indexOf(ch)!=-1) {
                f.temp.value += "1 <<- ";
                ntal += (j+1);
            }
        }
           
        f.temp.value=ntal;
        //document.ph.indhold.value="dd";
    }
    var deltot=0;
    tal1=Math.floor(ntal/100);

... osv - osv ...

/mvh
</bole>
Avatar billede herberth Juniormester
28. august 2003 - 00:26 #3
Spørgsmålet lukkes
Avatar billede jakobclausen Nybegynder
28. august 2003 - 09:06 #4
Kunne du slet ikke bruge vores svar?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester