JS: jak pracovat s textem v HTML strance?
.
Potreboval bych nakopnout (linkem) na neco jednoducheho, co by mi pouze naplnilo (nic vic, zadne odesilani) podle selectu textarea, viz priklad:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>
test
</title>
<meta charset="utf-8" />
<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script>
hymn = {
cz: [
'Kde domov můj, ',
'kde domov můj?',
'Voda hučí po lučinách,',
'bory šumí po skalinách,',
'v sadě skví se jara květ,',
'zemský ráj to na pohled!',
'',
'A to je ta krásná země,',
'země česká, domov můj,',
'země česká, domov můj!'
].join('\n'),
sk: [
'Nad Tatrou sa blýska,',
'hromy divo bijú.',
'Zastavme ich bratia,',
'veď sa ony stratia,',
'Slováci ožijú.'
].join('\n'),
us: [
'We\'re all living in Amerika',
'Amerika ist wunderbar',
'We\'re all living in Amerika',
'Amerika',
'Amerika',
'',
'Wenn getanzt wird will ich führen',
'Auch wenn ihr euch alleine dreht',
'Lasst euch ein wenig kontrollieren',
'Ich zeige euch wie\'s richtig geht'
].join('\n')
};
$(function() {
$('select[name="country"]')
.on('change', function() {
$('textarea[name="hymn"]').val(hymn[$(this).val()]);
})
.trigger('change');
});
</script>
</head>
<body>
<textarea
name="hymn"
cols="31"
rows="12"
></textarea>
<br />
<select
name="country"
size="1"
>
<option value="cz">
Česká hymna
</option>
<option value="sk">
Slovenská hymna
</option>
<option value="us">
Americká hymna
</option>
</select>
</body>
</html>
var hymny = new Array();
hymny["var_1"] = "Kde domov muj";
hymny["var_2"] = "Nad tatruuuuuuuu";
hymny["var_3"] = "hvezdy a pruhy";
Do proměnné hymny ukládáš pole, ale přitom ho jako pole nepoužíváš. Místo new Array() by tam mělo být new Object(). Není to syntaktická chyba, je to chyba z hlediska sémantiky. Jinak osobně mi přijde o něco přehlednější zápis pomocí literálu:
Kód:
var hymny = {
var_1: 'Kde domov muj',
var_2: 'Nad tatruuuuuuuu',
var_3: 'hvezdy a pruhy'
};
Do proměnné hymny ukládáš pole, ale přitom ho jako pole nepoužíváš.
A jak ho používám, když ne jako pole? Do proměnné "hymny" žádné pole neukládám, ale deklaruji proměnou "hymny" jako pole. A dále do pole "hymny" na index "var_X" ukládám hodnotu "XYZ".
Do proměnné "hymny" žádné pole neukládám, ale deklaruji proměnou "hymny" jako pole.
Do proměnné hymny ukládáš instanci třídy Array. V JS nic nemá pevný typ, takže ani nemůžeš proměnnou s nějakým typem deklarovat.
A dále do pole "hymny" na index "var_X" ukládám hodnotu "XYZ".
V JavaScriptu je všechno objekt, který může mít svoje vlastnosti(v podstatě mapa {klíč: hodnota}). Pole je taky objekt a můžeš s ním pracovat jako s mapou, ale není k tomu původně určeno. Je to úplně stejná chyba, jako kdybys to napsal takhle:
Kód:
var hymny = new Function();
hymny["var_1"] = "Kde domov muj";
hymny["var_2"] = "Nad tatruuuuuuuu";
hymny["var_3"] = "hvezdy a pruhy";