Autor Zpráva
tulik
Profil *
Dobrý den, chci se zeptat na pro vás určitě lehkou otázku. Dělám si funkci a chci aby stejný text se vymazal. Chci docílit aby první onclick text zapsal a druhý ho vymazal. Hledal jsem na internetu, ale nic nenašel. Poradí nějaká dobrá duše? Děkuju předem

<p onclick="add('text_1');">text_1</p>
<p onclick="add('text_2');">text_2</p>



Prozatím se to snažím vyřešit takhle:
    function add(text){
      text = (text == 'bílá')?'none':'bílá';
      document.getElementById("write").innerHTML += text;
    }
Bohužel to vypisuje pořád jen none. Co dělám špatně?
honzaik
Profil
no moc tě nechápu, ale jestli chce místo none nic :D tak tam dej jen ""
ale ta tvoje funkce je uplně mimo :D
proč tam je nějaká bílá? :D když pokaždý tam budeš akorát vpisovat "text_1" nebo "text_2"
napiš přesně co bys chtěl :D
tulik
Profil *
Tohle je poslední verze mého "výtvoru". Proč? Jedná se mi o barvy.
function add(id,text){
  if(id == 'white'){
    bila = (text == 'bílá')?'<a onclick="add(\'white\',\'none\');">bílá</a>':'';
  }
  if(id == 'yellow'){
    zluta = (text == 'žlutá')?'<a onclick="add(\'yellow\',\'none\');">žlutá</a>':'';
  }
  barvy = bila + zluta;
  document.getElementById("write").innerHTML = barvy;
}
Davex
Profil
tulik:
Proč?
Protože vždy platí, že

'none' != 'bílá'
'none' != 'žlutá'
tulik
Profil *
Svojí tvorbu vzdávám. Neví někdo o nejakým funkci kde si užiatel může naklikat seznam barev a případně i odstranit zvolené?
Sir Tom
Profil
tulik:
Také dobrý den,

napiš nám, co bys přesně chtěl, aby funkce uměla a nejlépe to popiš i na nějakém příkladu.
tulik
Profil *
function add(id,text){
  if(id == 'white'){
    bar = (text == 'bílá')?'<a onclick="add(\'white\',\'none\');"><button class="white">&nbsp;</button></a>':' ';
  }
  if(id == 'yellow'){
    bar = (text == 'žlutá')?'<a onclick="add(\'yellow\',\'none\');"><button class="yellow">&nbsp;</button></a>':' ';
  }
  if(id == 'fuchsia'){
    bar = (text == 'purpur')?'<a onclick="add(\'fuchsia\',\'none\');"><button class="fuchsia">&nbsp;</button></a>':' ';
  }
  document.getElementById("write").innerHTML += bar;
}

Poslední můj výtvor. Chci docílit toho, že kdyz kliknu třeba na tohle: <button class="white" onclick="add('white','bílá');">&nbsp;</button>

Tak se mi zobrazí barva. Potom třeba změnim názor a barvu budu chtít odebrat, tak když kliknu na přidanou barvu, tak se zase odebere. Barev je víc a každá by se měla po kliknutí na seznamu zobrazit a po odkliknutí by měla zase zmizet.


Kliknu na modrou, červenou a zelenou, tak se mi zobrazi modrý, červený a zelený čtverec. Když kliknu na zelený co se přidal, tak se odebere pouze zelený. Js se učím a umím spíš jen základy a i ty jsou slabé a tahle funkce je dost náročná jak jsem v průběhu zjistil.


nebo po kliknutí třeba na tlačítko by mohlo vyvolat všechny barvy a mazání podle kliknu na onou barvu. Nevím jestli tohle vůbec jde udělat přesmě podle mch představ. Já jsem zklamal, ale možná nějakej borec to dokázal i třeba se podělil na internetu. Googlil jsem dlouho a nic co by vystihovalo mou potřebu sem nenašel.
juriad
Profil
Napsal jsem skript, který zobrazí malé čtverce, které se po kliknutí zvětší a jejich barva se přidá do hodnoty inputu; po dalším kliknutí se zmenší a barva se odebere z hodnoty inputu. Sleduj, co se objeví v URL po odeslání formuláře
<form>
    <input type="text" name="barvy" id="barvy">
    <div id="nabidkaBarev" style="height: 200px;"></div>
    <input type="submit">
</form>

<script>
    // TODO sem přidej seznam všech barev 
    var barvy = {'red': 'červená', 'blue': 'modrá', 'green' : 'zelená'};


    function pridejOdeber(event) {
        event = event || window.event;
        var ctverec = event.target ? event.target : event.srcElement;
        var barva = ctverec.id;

        var input = document.getElementById('barvy');
        var pole = input.value.length == 0? [] : input.value.split(",");

        var index = pole.indexOf(barva);
        if(index >=0) {
            pole.splice(index, 1);
            input.value = pole.join(',');
            ctverec.style.width = '100px';
            ctverec.style.height = '100px';
            ctverec.innerHTML = "přidej " + barvy[barva];
        } else {
            pole.push(barva);
            input.value = pole.join(',');
            ctverec.style.width = '200px';
            ctverec.style.height = '200px';
            ctverec.innerHTML = "odeber " + barvy[barva];
        }
    }
    
    var input = document.getElementById('barvy');
    input.value = '';
    // následující řádek odkomentuj, aby uživatel neviděl input, ale jen nabídku barev
    // input.style.display = 'none';
    var nabidka = document.getElementById('nabidkaBarev');
    for(var barva in barvy) {
        var ctverec = document.createElement("div");
        ctverec.id = barva;
        ctverec.innerHTML = "přidej " + barvy[barva];
        ctverec.style.background = barva;
        ctverec.style.width = '100px';
        ctverec.style.height = '100px';
        ctverec.style.cssFloat = 'left';
        ctverec.onclick = pridejOdeber;
        nabidka.appendChild(ctverec);
    }
</script>

živá ukázka: http://jsfiddle.net/CqJP3/
tulik
Profil *
Děkuju. To je přesně ono.
juriad
Profil
Nebo ještě lépe takto: http://jsfiddle.net/r6sFH/
Nepoužívá pro uložení výběru input type=text, ale checkboxíky. Funguje to navíc i lidem bez javascriptu.

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: