Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem SMS preloz do textu

Nevite nekdo proc mi nejde tento script, zdroj je z morseovky. Chci aby uzivatel kdyz napise m tak mu to prelozi do 6, kdyz napise n tak mu to prelozi do 66 viz:

<SCRIPT language=JavaScript>
<!--
function preloz(formular1) {
znaky = new Array(
"0","1","2","3","4","5","6","7","8","9",
"A","B","C","D","E","F","G","H","I","J",
"K","L","M","N","O","P","Q","R","S","T",
"U","V","W","X","Y","Z",
"a","b","c","d","e","f","g","h","i","j",
"k","l","m","n","o","p","q","r","s","t",
"u","v","w","x","y","z",
" ","_",".",",","?",":",";","-","!","/");

morseovka = new Array(
"-----",".----","..---","...--","....-",
".....","-....","--...","---..","----.",
".-","-...","-.-.","-..",".","..-.",
"--.","....","..",".---","-.-",".-..",
"--","-.","---",".--.","--.-",".-.",
"...","-","..-","...-",".--","-..-",
"-.--","--..",
".-","-...","-.-.","-..",".","..-.",
"--.","....","..",".---","-.-",".-..",
"--","-.","---",".--.","--.-",".-.",
"...","-","..-","...-",".--","-..-",
"-.--","--..",
" "," ",".-.-.-",
"--..--","..--..","---...","-.-.-.", "-....-","!","-..-.");

var vstup = formular1.vstup.value;
var vystup = ""
formular1.vystup.value = vystup;
for(poradi = 0; poradi < vstup.length; poradi++) {
znak = vstup.charAt(poradi);
for (i = 0; i < znaky.length; i++) {
if (znak == znaky[i]) {

vystup += morseovka[i];
break;
  }
 }
}
formular1.vystup.value = vystup;
}

-->
</SCRIPT>

<form name="formular1">
<textarea name=vstup rows=3 cols=70></TEXTAREA>
<p><input onclick=javascript:preloz(this.form) type=button value=Přelož></p>
<textarea readonly name=vystup rows=3 wrap=physical cols=70>
</TEXTAREA>
</form>

Ale nejak mi to nepreklada :(

Předmět Autor Datum
Tady sem to upravil :) : <SCRIPT language=JavaScript> <!-- function preloz(formular1) { znaky = new…
Mrves 19.12.2007 01:14
Mrves
tak to je divne, ptz je to to iste. Skusil som to aj s funkciou concat() namiesto toho += a aj tak t…
MM.. 19.12.2007 01:46
MM..
Aha uz to vidim, chybaju ti (dvakrat) uvodzovky za 444- Take nieco (syntakticku chybu) hladas ak sa…
MM.. 19.12.2007 01:57
MM..
Že chybí uvozovky je vidět už na první pohled - podle odlišné barvy textu kódu v tom místě. Ve FF j…
host 19.12.2007 08:20
host
Po opravení syntaktických chýb by to fungovalo, ale ak by si to chcel zapísať trochu kratšie a efekt… poslední
los 19.12.2007 11:08
los

Tady sem to upravil :) :

<SCRIPT language=JavaScript>
<!--
function preloz(formular1) {
znaky = new Array(
"A","B","C","D","E","F","G","H","I","J",
"K","L","M","N","O","P","Q","R","S","T",
"U","V","W","X","Y","Z",
"a","b","c","d","e","f","g","h","i","j",
"k","l","m","n","o","p","q","r","s","t",
"u","v","w","x","y","z",
" ","_",".",",","?",":",";","-","!","/");

morseovka = new Array(
"2","22-","222-","3-","33-","333-",
"4-","44-","444-,"5-","55-","555-",
"6-","66-","666-","7-","77-","777-",
"7777-","8-","88-","888-","9-","99-",
"999-","9999-",
"2","22-","222-","3-","33-","333-",
"4-","44-","444-,"5-","55-","555-",
"6-","66-","666-","7-","77-","777-",
"7777-","8-","88-","888-","9-","99-",
"999-","9999-",
" "," ",".-.-.-",
"--..--","..--..","---...","-.-.-.", "-....-","!","-..-.");

var vstup = formular1.vstup.value;
var vystup = ""
formular1.vystup.value = vystup;
for(poradi = 0; poradi < vstup.length; poradi++) {
znak = vstup.charAt(poradi);
for (i = 0; i < znaky.length; i++) {
if (znak == znaky[i]) {

vystup += morseovka[i];
break;
  }
 }
}
formular1.vystup.value = vystup;
}

-->
</SCRIPT>

<form name="formular1">
<textarea name=vstup rows=3 cols=70></TEXTAREA>
<p><input onclick=javascript:preloz(this.form) type=button value=Přelož></p>
<textarea readonly name=vystup rows=3 wrap=physical cols=70>
</TEXTAREA>
</form>

tak to je divne, ptz je to to iste. Skusil som to aj s funkciou concat() namiesto toho += a aj tak to nejde (original ide).
Poradim ti toto: javascript mozes debugovat napr. tak, ze si na spravne miesto pridas alert(cosi); napr. alert(znak); alebo alert(i); alebo apod. potom budes vidiet kam ti to leze/neleze a rozmyslat ze preco. Napr. zistil som ze sa vobec nespusti ta fcia toho scriptu resp. vobec nefunguje (to sa moze stat aj ak je v nom syntakticka chyba napr. nesedia ciarky, uvodzovky, zatvorky apod), este skumam ze preco :-o

Nepouzil si nejake divne znaky " ? V com si to upravoval? odporucam radsej na take veci notepad.

Aha uz to vidim, chybaju ti (dvakrat) uvodzovky za 444-

Take nieco (syntakticku chybu) hladas ak sa script vobec nespusti (aj ked das alert("bum"); na zaciatok funkcie tak nevybehne ziaden alert)
Alebo tusim ze napr. vo FF je aj nejaka error console kdesi v menu, mozno ze aj tam nieco vypise, neviem.

Po opravení syntaktických chýb by to fungovalo, ale ak by si to chcel zapísať trochu kratšie a efektívnejšie, tak by sa to dalo ďalej upraviť. Napr. by si nemusel mať v tabuľke preklad z malého a veľkého písmena na ten istý reťazec, prípadne by si si mohol ušetriť jedno lineárne vyhľadávanie.

Výsledok by mohol vyzerať nejako takto:

function preloz(form) {
	var morse = {
		"A":"2","B":"22-","C":"222-","D":"3-","E":"33-","F":"333-","G":"4-",
		"H":"44-","I":"444-","J":"5-","K":"55-","L":"555-","M":"6-","N":"66-",
		"O":"666-","P":"7-","Q":"77-","R":"777-","S":"7777-","T":"8-","U":"88-",
		"V":"888-","W":"9-","X":"99-","Y":"999-","Z":"9999-",
		" ":" ","_":" ",".":".-.-.-",",":"--..--",
		"?":"..--..",":":"---...",";":"-.-.-.","-":"-....-",
		"!":"!","/":"-..-."
	}

	var result = ""
	var text = form.vstup.value.toUpperCase();

	for (var i = 0; i < text.length; ++i)
	    morse[text.charAt(i)] && (result += morse[text.charAt(i)]);

	form.vystup.value = result;
}

Zpět do poradny Odpovědět na původní otázku Nahoru