NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Kara
Člen
Avatar
Kara:3.4.2017 16:24

Ahoj,

JS zas až tak neovládám, každopádně už celý den zkouším jednu věc a prostě to nejde, zkoušela jsem to x způsoby a na netu to vypadá, že to mám správně, stejně to nefunguje.

O co jde - mám formulář, kde je možnost přidat "nový text", "nový obrázek" a "nový koment". Všechno to pak putuje v poli do PHP, kde se to ukládá do knihovny. Abych věděla, co "bylo dřív", chci k nim přiřadit také hodnotu "i".

Pomocí JS přidávám novou položku formuláře ve které jsou 2 inputy. Jeden pro text a jeden pro hodnotu "i". Potřebuji, aby když přidám novou položku formuláře, v inputu poradi už byla napsana hodnota "i".

Priklad

TEXT [0] --- PORADI [0],
TEXT [1] ----- PORADI [1],
KOMENT[0] --- PORADI[2],
PIC[0] --- PORADI [3]' APOD......

Problem je, ze se v inputu poradi nikdy nevypise hodnota "i" :( Mohl byste na to prosim nekdo kouknout? Dekuji

<button class="more" onclick="newtex­t()">Přidat text</button>

<script>
var i = 0;
function newtext() {

var pocet = document.getE­lementById("ta­ble_insert").row­s.length;
var radku = pocet -1;

var table = document.getE­lementById("ta­ble_insert");

var radek = table.insertRow(rad­ku); //vlozi tr
var bunka1 = radek.insertCe­ll(0);
var bunka2 = radek.insertCe­ll(1); //vlozi bunky
var bunka3 = radek.insertCe­ll(2);

bunka1.innerHTML="Tex­t:";
bunka2.innerHTML = '<textarea name="text[]" rows="20" cols="50"></tex­tarea>';
bunka1.id="rig­ht_top";
bunka2.id="left";

bunka3.innerHTML = '<input name="poradi[]" type="text" />';
document.getE­lementsByName("po­radi")[i].valu­e=i +1;

i++;

}

function newfoto() {
var i = 0;
var pocet = document.getE­lementById("ta­ble_insert").row­s.length;
var radku = pocet -1;

var table = document.getE­lementById("ta­ble_insert");

var radek = table.insertRow(rad­ku); //vlozi tr
var bunka1 = radek.insertCe­ll(0);
var bunka2 = radek.insertCe­ll(1); //vlozi bunky
var bunka3 = radek.insertCe­ll(2);

bunka1.innerHTML="Fo­to:";
bunka2.innerHTML = '<input type="file" name="pic[]"/>';
bunka1.id="rig­ht_top";
bunka2.id="left";

bunka3.innerHTML = '<input name="poradi[]" type="text" />';
document.getE­lementsByName("po­radi")[i].valu­e=i +1;
i++;

}

function newkoment() {
var i = 0;
var pocet = document.getE­lementById("ta­ble_insert").row­s.length;
var radku = pocet -1;

var table = document.getE­lementById("ta­ble_insert");

var radek = table.insertRow(rad­ku); //vlozi tr
var bunka1 = radek.insertCe­ll(0);
var bunka2 = radek.insertCe­ll(1); //vlozi bunky
var bunka3 = radek.insertCe­ll(2);

bunka1.innerHTML="Ko­ment:";
bunka2.innerHTML = '<textarea name="koment[]" cols="50"></tex­tarea>';
bunka1.id="rig­ht_top";
bunka2.id="left";

bunka3.innerHTML = '<input name="poradi[]" type="text" />';
document.getE­lementsByName("po­radi")[i].valu­e=i +1;

i++;

}
</script>

 
Odpovědět
3.4.2017 16:24
Avatar
Kara
Člen
Avatar
Kara:3.4.2017 16:27

A OMYL - tohle je dalsi, co jsem zkousela, jeslti to nefunguje....­.....var i = 0; tam mam jen jednou na zacatku pred vsemi funkcemi

 
Nahoru Odpovědět
3.4.2017 16:27
Avatar
David Hynek
Tvůrce
Avatar
David Hynek:3.4.2017 16:59

Máš dvě možnosti.
První lehčí, ale čuňácký:

<script>
bunka3.innerHTML = "<input name=\"poradi[]\" type=\"text\" value=\""+(i+1)+"\" />";
</script>

Ale lepší by to bylo nějak takhle přes DOM:

<script>
new_input = document.createElement("input");
        new_input.setAttribute("name", "poradi[]");
        new_input.setAttribute("type", "text");
        new_input.setAttribute("value", (i+1));
document.getElementById("bunka3").appendChild(new_input);
<script>

Ale lepší by bylo ty položky vytvářet přes DOM

Editováno 3.4.2017 17:01
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
3.4.2017 16:59
Čím víc vím, tím víc věcí nevím.
Avatar
Kara
Člen
Avatar
Kara:5.4.2017 13:38

dekuji moc :) jdu se do toho pustit :)

 
Nahoru Odpovědět
5.4.2017 13:38
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.