![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
05.09.2018, 16:02
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от drakulawz
|
Имеете в виду, что лучше делать нативными методами js?
|
Для простых операций да. jQuery, это не новый язык, это js библиотека и в недрах ее все выполняется на нативном JS, то есть JQ берет на себя все "тяготы" кроссбраузерности или позволяет написать "желаемое" простым выражением, которое на нативном JS будет более объемным.
Но если к примеру в цикле, используя jq метод, или в обработчике событий, когда в методе доступен DOM элемент как this, который имеет свойство value, получать этот элемент как jq объект ради получения его значения - $(this).val(), это и глупо, и не оправдано, ибо это получить проще как this.value.
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
05.09.2018, 16:25
|
Аспирант
|
|
Регистрация: 13.08.2018
Сообщений: 79
|
|
Сообщение от laimas
|
Но если к примеру в цикле, используя jq метод, или в обработчике событий, когда в методе доступен DOM элемент как this, который имеет свойство value, получать этот элемент как jq объект ради получения его значения - $(this).val(), это и глупо, и не оправдано, ибо это получить проще как this.value.
|
Понятно, но это изначально задания на js. Я же пытаюсь зделать их на jq. Не спрашивайте зачем я это делаю, просто мне jq практичнее...
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
05.09.2018, 16:48
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
Сообщение от drakulawz
|
А как функция понимает, что в num записаны цифры?
|
Какие цифры?
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
05.09.2018, 17:09
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от 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.
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
05.09.2018, 20:07
|
Аспирант
|
|
Регистрация: 13.08.2018
Сообщений: 79
|
|
Сообщение от laimas
|
laimas
|
понял... буду иметь в виду. Я везде jq совал так как думал, что он облегчает и сокращает функции и на нативном js вообще никто сейчас не программирует.
Сообщение от Dilettante_Pro
|
Какие цифры?
|
у Вас числа прописаны словами, вот и интересуюсь, как оно понимает, что это цифры, а не строки с буквами...
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
05.09.2018, 21:58
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
drakulawz,
Метод html вызывает функцию столько раз, сколько элементов находится в обьекте num.
Внутренний параметр i работает в качестве счетчика элементов. Слова в html не имеют никакого значения - если бы там были Яблоко , Слон и т.п., то элементы пронумеровались бы точно так же
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
07.09.2018, 10:23
|
Аспирант
|
|
Регистрация: 13.08.2018
Сообщений: 79
|
|
Сообщение от Dilettante_Pro
|
Dilettante_Pro
|
Ага, оно просто пересчитало параграфы. Я просто сам уже запутался, я ведь в одной теме два разных задания впихнул.
Первое:
Даны N абзацев и кнопка. По нажатию на кнопку запишите в конец каждого абзаца его порядковый номер.
Второе:
Даны N абзацев с числами. По нажатию на кнопку выведите эти числа в инпут через запятую в порядке возрастания.
Выходит, что этот метод не подходит к второму заданию? Он ведь считает сами параграфы, а не то что в них?
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
07.09.2018, 12:08
|
![Аватар для рони](https://javascript.ru/forum/image.php?u=7416&dateline=1372796129) |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,135
|
|
drakulawz,
цикл each и для первого и для второго
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
07.09.2018, 12:12
|
![Аватар для рони](https://javascript.ru/forum/image.php?u=7416&dateline=1372796129) |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,135
|
|
drakulawz,
любой цикл html или each или text можно использовать
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
07.09.2018, 12:24
|
Профессор
|
|
Регистрация: 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.
|
|
|
|