Otázka nie je, prečo ti to nefunguje, ale prečo by to malo fungovať.
1. form.getElementById - myslel si document.getElementById?
2. Vo funkcii Update_2 máš v komentári napísané, že niečo priraďuješ do premennej z. Faktom je, že premennú z priraďuješ do niečoho. Keďže si do nej nepriradil žiadnu hodnotu, tak je tam undefined.
3. Vo funkcii Update pracuješ s premennou z, ktorú si nikde nedeklaroval. Môžeš premennú z deklarovať globálne - potom by to možno niečo spravilo. Ale keďže nikde nič do nej nepriraďuješ, tak je to jedno.
4. Používaš premennú data_obr, ako keby to bola globálna premenná, pritom ti stačí lokálna.
5. form.cislo+y.value - chcel si napísať form['cislo' + y].value?
6. Si si istý, že chceš použiť innerHTML, t.j. ak niekto zadá HTML, má sa v náhľade vyrenderovať HTML alebo text?
7. Používaš globálnu premennú nahled, aby si získal prístup k prvku s id=nahled. Takéto niečo bolo odpustiteľné možno pred 10 rokmi.
To boli tie väčšie chyby, ešte si rýpnem do tých menších:
1. Atribút language="JavaScript" - to je z minulého storočia?
2. Názvy funkcií Update, Update_2 - okrem toho, že nedodržiavaš konvencie sú tie názvy dosť ničnehovoriace. Vstupný prvok name="z", srsly?
3. Komentáre typu "i = 1; // priradí jednotku do premennej i" - ::facepalm::
4. Inline zápis JS v HTML kóde sa dá prirovnať inline zápisu štýlov v HTML kóde - funguje to, ale nie je to dobre.
5. Ak plánuješ, že ten náhľad bude fungovať len s JavaScriptom, tak do toho nemiešaj server. Buď to sprav najprv tak, aby to fungovalo čisto serverovo, alebo to sprav rovno len s využitím JS.
Aby to nebolo, že len frflem, tak tu je nejaký nástrel čisto JS verzie toho, čo si myslím, že chceš dosiahnuť:
<form method="post">
Počet obrázků : <input id="count" size="2" maxlength="2"> (max.: 6)
</form>
<script>
var count = document.getElementById('count');
var preview = document.createElement('div');
var inputs = [];
var spans = [];
document.body.appendChild(preview);
count.form.onsubmit = function() {
return false;
};
var bindInput = function(input, fn) {
input.oninput = function(e) {
this.onkeydown = null;
fn.call(this, e);
};
input.onkeydown = function(e) {
fn.call(this, e);
};
};
var onInput = function(e) {
e = e || window.event;
var target = e.target || e.srcElement;
for (var i = 0, n = inputs.length; i < n; ++i)
if (inputs[i] == target) {
spans[i].firstChild.data = target.value;
break;
}
};
bindInput(count, function() {
var cnt = Math.max(0, Math.min(6, this.value));
if (!isNaN(cnt)) {
if (cnt < inputs.length) {
for (var i = cnt, n = inputs.length; i < n; ++i) {
this.form.removeChild(inputs[i]);
preview.removeChild(spans[i]);
}
inputs.length = cnt;
spans.length = cnt;
}
for (var i = inputs.length, n = cnt; i < n; ++i) {
var input = document.createElement('input');
bindInput(input, onInput);
this.form.appendChild(input);
inputs.push(input);
var span = document.createElement('span');
span.appendChild(document.createTextNode(''));
preview.appendChild(span);
spans.push(span);
}
}
});
</script>