1. Здраво и добредојдовте на форумот на IT.mk.

    Доколку сеуште не сте дел од најголемата заедница на ИТ професионалци и ентузијасти во Македонија, можете бесплатно да се - процесот нема да ви одземе повеќе од 2-3 минути, а за полесна регистрација овозможивме и регистрирање со Facebook и Steam.
    Сокриј

Додавање на класа преку читање на атрибут. Како?

Дискусија во форумот 'HTML, CSS, JavaScript, XML базирани' започната од skullmonkey, 21 oктомври 2018.

  1. skullmonkey

    skullmonkey
    Модератор

    3,592
    2,712
    25 Април 2007
    Машко
    Актер
    Од време на време ми треба jQuery ili JavaScript, а не ги користам често и сега лутам со саати незнаејќи како да го порставам правилно.

    Имено, го имам кодов:
    <a title="pdf" href="../item/download/2_385d2dc62b4ca8f31f248e6bf266935d"><span>Линк за симнување</span></a>

    Ми треба скрипта која ќе го прочита атрибутот title и ќе додаде класа на линкот.
    Во мојот случај да добијам ваков код:
    <a class="pdfFile" title="pdf" href="../item/download/2_385d2dc62b4ca8f31f248e6bf266935d"><span>Линк за симнување</span></a>

    Тука пишувам пошто сте побрзи од StackOverflow.
     
  2. 100JKO

    100JKO
    Gaining Experience

    14
    65
    27 Јуни 2018
    Машко
    Intern
  3. skullmonkey

    skullmonkey
    Модератор

    3,592
    2,712
    25 Април 2007
    Машко
    Актер
    Не. Треба да прочита горе што пишува во title атрибутот и истото да го дадам како на тој линк.
     
  4. Zippo

    Zippo
    Gaining Experience

    493
    413
    22 oктомври 2014
    Data Analyst
    <script type="text/javascript">
    document.getElementsByTagName("a")[0].className += "pdfFile";
    </script>
     
  5. skullmonkey

    skullmonkey
    Модератор

    3,592
    2,712
    25 Април 2007
    Машко
    Актер
    Толку не е јасно што барам? :)))
    Ако е <a title="pdf" href="../item/downloa.....
    да добијам <a class="pdfFile" title="pdf" href="../item/downloa....

    Ако е <a title="jpg" href="../item/downloa.....
    да добијам <a class="jpgFile" title="pdf" href="../item/downloa....

    Ако е <a title="doc" href="../item/downloa.....
    да добијам <a class="docFile" title="pdf" href="../item/downloa....
     
  6. Zippo

    Zippo
    Gaining Experience

    493
    413
    22 oктомври 2014
    Data Analyst
    let type = document.getElementsByTagName("a")[0].getAttribute("title")
    document.getElementsByTagName("a")[0].className = type + "File";
     
  7. Luki Junior

    Luki Junior
    Gaining Experience

    143
    256
    28 Декември 2015
    Машко
    $("#td_id").attr('class', 'newClass');
    Можеш претходно да го изманипулираш стринг-от и да го лепнеш како класа после манипулацијата.

    Или да правиш .toggleclass('change new_class');

    Или да му зададеш комплетно нова класа откако ќе му ја дознаеш која ја има. Или да си напишеш метод кој ќе ти генерира нова класа во зависност дали имаш PDF, JPEG или PNG.

    За повеќе детали погледни тука
    jquery change class name
     
  8. skullmonkey

    skullmonkey
    Модератор

    3,592
    2,712
    25 Април 2007
    Машко
    Актер
    Додавањето класа ми е јасно, како да ја прочитам класата од атрибутот. Ова од @Zippo ми делува најлогично ама не работи.
    Да го затворам во <script> ... </script>?
     
  9. Zippo

    Zippo
    Gaining Experience

    493
    413
    22 oктомври 2014
    Data Analyst
    Тоа ти е без JQuery, треба да го ставиш во <script></script>. И го наоѓа првиот А елемент од DOM. Треба да му направиш еден event управувач, за да го иницираш кога ќе се вклучува извршувањето на скриптата.

    Ако сакаш сите елементи да ги промениш одеднаш:
    <script>
    [...document.getElementsByTagName("a")].map( link => link.className = link.getAttribute("title") + "File")
    </script>
     
    Последна промена: 21 oктомври 2018
    На skullmonkey му/ѝ се допаѓа ова.
  10. skullmonkey

    skullmonkey
    Модератор

    3,592
    2,712
    25 Април 2007
    Машко
    Актер
    Ова ме реши:
    Код:
    <script type="text/javascript">
    var elements = document.querySelectorAll("a");
    elements.forEach(element => element.title && element.classList.add(element.title.replace(/\s/g,'') + 'File'))
    </script>
    Фала ти секако.
     
  11. Zippo

    Zippo
    Gaining Experience

    493
    413
    22 oктомври 2014
    Data Analyst
    Ова е апсолутно исто како и јас што го пишав само што користи услов ако има property title да додаде класа вредност на title + string 'File'
     
    На skullmonkey му/ѝ се допаѓа ова.
  12. gdamjan

    gdamjan
    On your way to fame

    2,235
    509
    3 Април 2008
    па затоа што баш тоа го бара цело време човекот :)


    @skullmonkey
    afaik, css selector-от кој ти треба е
    Код:
    $("a[title = 'pdf']")
    , а уствари и со
    Код:
    document.querySelectorAll()
    работи истиот селектор, ни jquery не ти треба.
     

Сподели

Вчитување...