Hirdetés

Keresés

Új hozzászólás Aktív témák

  • cattus
    addikt

    Biztos erre is van szebb kód, ami nem anti-pattern és 2020-ban is megállja a helyét:
    Kiválasztott checkbox elemek kiíratása. A példakódban Alert-be és Console.log-ba
    A kiválasztott elemeket vessző, majd szóköz választja el a megjelenített ablakban, de az utolsó elemnél is megjelenik ez a vessző és szóköz, ami nem kell. Ezt úgy oldottam meg, hogy a kapott elemlista stringből levágok két karaktert, ami a vessző és a szóköz.

    function printChecked(){
    var items=document.getElementsByName('acs');
    var selectedItems="";
    for(var i=0; i<items.length; i++){
    if(items[i].type=='checkbox' && items[i].checked==true)
    selectedItems+=items[i].value+", ";
    }
    var str = selectedItems.substring(0, selectedItems.length - 2);
    alert(str);
    console.log(str);
    }

    JSFiddle Demo

    Engedelmeddel írnék néhány feedbacket a kódhoz:
    HTML:
    A `big` HTML tag obsolete, nem javasolt a használata
    <input type="button" /> helyett inkább használjunk <button>-t.
    Nem szerencsés, ha a `name` attribútom ugyanaz több input elemnél is, mivel esetleges szerveroldali feldolgozásnál ez azonosítja az egyes elemeket.

    JS:
    var helyett ajánlott let vagy const használata
    Személyes preferencia, de szerintem nem mindegy, hogy JS-ből milyen módon kérdezed le a DOM elemeket. Pl. te class alapján teszed, én ezt akkor tenném, ha pl. a class-t akarom módosítani. Ebben az esetben inkább document.querySelectorAll('input[type="checkbox"]')-ot használnék (így pl. már eleve ki van szűrve minden input, ami nem checkbox).

    A for ciklus helyett megcsináltam array műveletekkel: fiddle

    +1: érdemes jól formázottan tartani a kódot, sokat segít az olvashatóságon (a JSFiddle tudja automatikusan a jobb felül lévő Tidy gombbal).

Új hozzászólás Aktív témák