Autor Zpráva
Ota
Profil *
Dobrý den, mám script, který mi přidává "pole" do stránky a zároveň je umí i zpětně mazat.

přidávaný počet elementů je omezený na 5 a každý má svoje ID >> to znamena, že když 5x kliknu na "Přidat pole" šesté už se nepřidá.

K problému, který řeším. Dejme tomu, že přidám všech 5 polí a smažu pole číslo 3, pak přidám další pole a přidá se mi pole s ID 6 >> Ja to chci mít omezené maximálně na ID do 5.

Jak to tedy udělat, aby při smazání jednoho pole a následné přidání bylo zpět to smazané? Udělat tam nějakou kontrolu které pole chybí a to potom doplnit?

S javascriptem začínám. Programuji především v php.

Díky za jakoukoliv odpověd.. snad jsem popsal problém:)

Tady je script:

<script>

function addEvent() {
if(addEvent.elmCount >= 5) { return; }

addEvent.elmCount++;

var ni = document.getElementById('myDiv');
var numi = document.getElementById('theValue');
var num = (document.getElementById("theValue").value -1)+ 2;
numi.value = num;
var divIdName = "my"+num+"Div";
var newdiv = document.createElement('div');
newdiv.setAttribute("id",divIdName);
newdiv.innerHTML = "Pole číslo " + num + " přidáno! <a href=\"javascript:;\" onclick=\"removeElement(\'"+divIdName+"\')\">Vymazat pole &quot;"+divIdName+"&quot;</a>";
ni.appendChild(newdiv);
}

addEvent.elmCount = 0;

function removeElement(divNum) {
var d = document.getElementById('myDiv');
var olddiv = document.getElementById(divNum);
d.removeChild(olddiv);

addEvent.elmCount--;
}

</script>

<input type="hidden" value="0" id="theValue" />
<p><a href="javascript:;" onclick="addEvent();">Přidat pole</a></p>
<div id="myDiv"> </div>
Darker
Profil
Můžeš projít cyklem for těch 5 divů, a pokud nějaký nebude existovat, tak ho vytvořit.

Místo elm.setAttribute("id","string") používej elm.id="string".


function removeElement(divNum) {
//univerzálnější verze
var olddiv = document.getElementById(divNum);
d.parentNode.removeChild(olddiv);
addEvent.elmCount--;
}



//EDIT
Tohle chodi:
addEvent=function() {
if(addEvent.elmCount >= addEvent.maxNodes) { return false; }

addEvent.elmCount++;
var nejmensiCislo=1;
for(var i=1;i<=addEvent.maxNodes;i++)
 if(!document.getElementById("my"+i+"Div")){nejmensiCislo=i;break}

var ni = document.getElementById('myDiv');
var numi = document.getElementById('theValue');
var num = (document.getElementById("theValue").value -1)+ 2;
numi.value = num;
var divIdName = "my"+nejmensiCislo+"Div";
var newdiv = document.createElement('div');
newdiv.id=divIdName;
newdiv.innerHTML = "Pole číslo " + nejmensiCislo + " přidáno! <a href=\"javascript:;\" onclick=\"removeElement(\'"+divIdName+"\')\">Vymazat pole &quot;"+divIdName+"&quot;</a>";
ni.appendChild(newdiv);
}

addEvent.elmCount = 0;
addEvent.maxNodes = 5;

removeElement=function(divNum) {
var d = document.getElementById('myDiv');
var olddiv = document.getElementById(divNum);
d.removeChild(olddiv);

addEvent.elmCount--;
}

Zm2nil jsem to jen minim8ln2.
Ota
Profil *
Díky moc jsi zlatej. Tohle jsem přesně potřeboval..

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: