Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Po stronie przeglądarki _ [JS] pętla czy jest jakis inny sposob?

Napisany przez: blokern 4.03.2021, 12:38:10

Hej mam taki kod

  1. $("div").hide();
  2. $("div[persons="+value+"]").show();


value wpisuje z inputa

oraz w body

  1. <div persons="1"></div>
  2. <div persons="2"></div>
  3. <div persons="3"></div>
  4. <div persons="4"></div>


naciskam ok i zostawia mi tylko te divy gdzie persons z inputa = persons z diva
a co zrobic zeby dac warunek >= ?
moj pomysl taki zeby sprawdzic ile wynosi value odjac od maxa i przepuscic tyle razy przez petle podstawiajac kolejno +1 do value az sie skonczy ale moze jest jakis inny sposob?
niestety ale

  1. $("div[persons>="+value+"]").show();


nie dziala



Napisany przez: trueblue 4.03.2021, 12:56:31

Nie działa, bo nie ma takiego selektora. Lista selektorów atrybutów jest na końcu: https://www.w3schools.com/css/css_attribute_selectors.asp
Musisz zrobić pętlę, ale nie kombinować z jakimś max i value, ale pobrać w każdej iteracji atrybut persons (dla niestandardowych atrybutów stosuje się atrybut data-*, czyli u Ciebie data-persons) i sprawdzić czy wartość jest większa od zadanej wartości.

Napisany przez: blokern 4.03.2021, 13:47:39

dzieki za odpowiedz.
czyli jednak petle

a cos takiego zadziala ale wezme do serca Twoja wskazowke zeby dodac data-

  1. var data = 'pies';
  2. $("div["+data+"='0']").hide();

dziala

Napisany przez: trueblue 4.03.2021, 15:00:49

Niezależnie czy pytasz czy twierdzisz, działa. Bo taki selektor istnieje.
Jest różnica pomiędzy "=", a ">=".

Napisany przez: LowiczakPL 4.03.2021, 18:48:11

  1. $("div[persons]").each(function() {
  2. let val = $(this).attr('persons');
  3.  
  4. if (val < 3) $(this).hide()
  5. });

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)