Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 05.09.2018, 16:02
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от drakulawz
Имеете в виду, что лучше делать нативными методами js?
Для простых операций да. jQuery, это не новый язык, это js библиотека и в недрах ее все выполняется на нативном JS, то есть JQ берет на себя все "тяготы" кроссбраузерности или позволяет написать "желаемое" простым выражением, которое на нативном JS будет более объемным.

Но если к примеру в цикле, используя jq метод, или в обработчике событий, когда в методе доступен DOM элемент как this, который имеет свойство value, получать этот элемент как jq объект ради получения его значения - $(this).val(), это и глупо, и не оправдано, ибо это получить проще как this.value.
Ответить с цитированием
  #22 (permalink)  
Старый 05.09.2018, 16:25
Аспирант
Отправить личное сообщение для drakulawz Посмотреть профиль Найти все сообщения от drakulawz
 
Регистрация: 13.08.2018
Сообщений: 79

Сообщение от laimas
Но если к примеру в цикле, используя jq метод, или в обработчике событий, когда в методе доступен DOM элемент как this, который имеет свойство value, получать этот элемент как jq объект ради получения его значения - $(this).val(), это и глупо, и не оправдано, ибо это получить проще как this.value.
Понятно, но это изначально задания на js. Я же пытаюсь зделать их на jq. Не спрашивайте зачем я это делаю, просто мне jq практичнее...
Ответить с цитированием
  #23 (permalink)  
Старый 05.09.2018, 16:48
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от drakulawz
А как функция понимает, что в num записаны цифры?
Какие цифры?
Ответить с цитированием
  #24 (permalink)  
Старый 05.09.2018, 17:09
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от drakulawz
просто мне jq практичнее...
Использование JQ там где нет необходимости, это не есть практичность, это есть расточительство. Если это единичный случай, ладно, но если правило, то весьма плохо.

Допустим есть поле ввода и нужно что-то сделать на странице при вводе некоторого значения в него. При этом все эти операции не касаются самого поля.

$('input').on('input', function() {
    if(this.value=='x') {
        //что-то делаем используя методы JQ
    }    
})


Здесь ради проверки условия поступать как if($(this).val()=='x') просто расточительство не имеющее ни пользы ни практичности.

А если при этом значении поле должно переливаться цветами аки хамелеон и мы будем "хамелеонить" на JQ, то нам потребуется поле как jq объект, вот тут все оправдано:

$('input').on('input', function() {
     $this = $(this); //input как объект jq
     if($this.val()=='x') { //все ОК
        //хамелеоним с $this
    } else {
        //иначе $this сидит и не отсвечивает
    }   
})

Последний раз редактировалось laimas, 05.09.2018 в 17:16.
Ответить с цитированием
  #25 (permalink)  
Старый 05.09.2018, 20:07
Аспирант
Отправить личное сообщение для drakulawz Посмотреть профиль Найти все сообщения от drakulawz
 
Регистрация: 13.08.2018
Сообщений: 79

Сообщение от laimas
laimas
понял... буду иметь в виду. Я везде jq совал так как думал, что он облегчает и сокращает функции и на нативном js вообще никто сейчас не программирует.

Сообщение от Dilettante_Pro
Какие цифры?
у Вас числа прописаны словами, вот и интересуюсь, как оно понимает, что это цифры, а не строки с буквами...
Ответить с цитированием
  #26 (permalink)  
Старый 05.09.2018, 21:58
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

drakulawz,
Метод html вызывает функцию столько раз, сколько элементов находится в обьекте num.
Внутренний параметр i работает в качестве счетчика элементов. Слова в html не имеют никакого значения - если бы там были Яблоко , Слон и т.п., то элементы пронумеровались бы точно так же
Ответить с цитированием
  #27 (permalink)  
Старый 07.09.2018, 10:23
Аспирант
Отправить личное сообщение для drakulawz Посмотреть профиль Найти все сообщения от drakulawz
 
Регистрация: 13.08.2018
Сообщений: 79

Сообщение от Dilettante_Pro
Dilettante_Pro
Ага, оно просто пересчитало параграфы. Я просто сам уже запутался, я ведь в одной теме два разных задания впихнул.
Первое:
Даны N абзацев и кнопка. По нажатию на кнопку запишите в конец каждого абзаца его порядковый номер.
Второе:
Даны N абзацев с числами. По нажатию на кнопку выведите эти числа в инпут через запятую в порядке возрастания.
Выходит, что этот метод не подходит к второму заданию? Он ведь считает сами параграфы, а не то что в них?
Ответить с цитированием
  #28 (permalink)  
Старый 07.09.2018, 12:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,078

drakulawz,
цикл each и для первого и для второго
Ответить с цитированием
  #29 (permalink)  
Старый 07.09.2018, 12:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,078

drakulawz,
любой цикл html или each или text можно использовать
Ответить с цитированием
  #30 (permalink)  
Старый 07.09.2018, 12:24
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Второе задание без явного цикла
<div class="p">5</div>
<div class="p">3</div>
<div class="p">1</div>
<div class="p">4</div>
<button class="btn">Sum</button>
<input type="text">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

<script>
var num = $('.p'),
     btn = $('.btn'),
     inp = $('input');

    btn.on({
        'click': sum
    });

    function sum() {
        var arr = [];
        num.html(function(){ arr.push(+this.innerHTML)});
        inp.val(arr.sort(srt));
    }
    function srt(a, b) {
        if (a > b) {
            return 1;
        }
        if (a < b) {
            return -1;
        }
        if (a == b) {
            return 0;
        }
    }
</script>

Последний раз редактировалось рони, 07.09.2018 в 12:32.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему так работает, а по-другому нет? ogurchik Общие вопросы Javascript 2 10.09.2015 18:08
Как вызвать метод? ibolgenos Общие вопросы Javascript 22 20.09.2014 00:04
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
В Firefox 3.5.5 не работает метод POST. Какие методы лечения? javascript_pupil AJAX и COMET 1 10.12.2009 20:34
Драгабл работает не так как надо valek1989 jQuery 0 16.11.2009 18:09