Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 05.09.2018, 13:17
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от drakulawz
Метод html записывает в массив параграфов тот же параграф но с добавлением нумерации
В примере пост 3 не так.
Метод .html() применяется к объекту jQuery, полученному по конкретному элементу DOM
num - объект jQuery со всеми элементами ".p"
num[i] - конкретный элемент DOM
$(num[i]) - объект jQuery конкретного элемента DOM
Ответить с цитированием
  #12 (permalink)  
Старый 05.09.2018, 13:28
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от drakulawz
не совсем понимаю значение слова гибрид в js
Это не термин JS
У вас часть кода работает с JQ объектами, а часть с DOM (вот и назвал гибридом). Если на чистом JQ используя его методы, то

num.each(function(n, e) {
    $(e).html($(e).html() += ' ' + ++n)
})


где .each() метод выполняющий тоже самое что for(...), n - это индекс текущего элемента, e - текуший элемент как DOM. А если доступен DOM имеющий innerHTML, то зачем же $(e).html($(e).html() += ' ' + ++n), если проще выполнить e.innerHTML += ' ' + ++n. Здесь $(e), это лишняя трата энергии.

Последний раз редактировалось laimas, 05.09.2018 в 13:30.
Ответить с цитированием
  #13 (permalink)  
Старый 05.09.2018, 13:29
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,480

Сообщение от drakulawz Посмотреть сообщение
разве так будет работать, без цикла?
У меня не работает...
Что значит не работает, если вот прям тут работает? 0_о
Разве что древнюю какую версию jq используешь...
__________________
29375, 35
Ответить с цитированием
  #14 (permalink)  
Старый 05.09.2018, 13:30
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от drakulawz
Вот полноценный скрипт:
function srt(a, b) {
if (a > b) {
return -1;
}
if (a < b) {
return -1;
}
if (a == b) {
return 0;
}
}
Ответить с цитированием
  #15 (permalink)  
Старый 05.09.2018, 13:34
Аспирант
Отправить личное сообщение для drakulawz Посмотреть профиль Найти все сообщения от drakulawz
 
Регистрация: 13.08.2018
Сообщений: 79

Сообщение от Dilettante_Pro
объект jQuery конкретного элемента DOM
ага, т.е. этот метод не применим напрямую к элементам DOM, понял... Благодарю за разъяснение.
Ответить с цитированием
  #16 (permalink)  
Старый 05.09.2018, 14:07
Аспирант
Отправить личное сообщение для drakulawz Посмотреть профиль Найти все сообщения от drakulawz
 
Регистрация: 13.08.2018
Сообщений: 79

Сообщение от laimas
num.each(function(n, e) {
    $(e).html($(e).html() += ' ' + ++n)
})
На это брекетс ругается и выполнять отказывается вообще.

Сообщение от Aetae
Что значит не работает
значит, что ничего не происходит когда я жму по кнопке кроме ошибки $num is not defined. Начинает работать только так:
function sum() {
        $(num).append(function(i){return ' ' + ++i});
    }


В целом - так конечно короче и проще. Благодарю за подсказку.

Последний раз редактировалось drakulawz, 05.09.2018 в 14:11.
Ответить с цитированием
  #17 (permalink)  
Старый 05.09.2018, 14:28
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от drakulawz
На это брекетс ругается и выполнять отказывается вообще.
Это от лени, скопировал не удалив лишнего. Должно быть $(e).html($(e).html() + ' ' + ++n). Но еще раз - не оправдано для простых операций получать JQ объект из доступного DOM объекта.
Ответить с цитированием
  #18 (permalink)  
Старый 05.09.2018, 14:41
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от drakulawz
$num is not defined
Невнимательно смотрите примеры.
У Aetae объявление переменных
var $num = $('.p'),


В вашем варианте при
var num = $('.p'),

достаточно
function sum() {
        num.append(function(i){return ' ' + ++i});
    }
Ответить с цитированием
  #19 (permalink)  
Старый 05.09.2018, 14:46
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Еще вариант - для разнообразия
<div class="p">Первый</div>
<div class="p">Второй</div>
<div class="p">Третий</div>
<div class="p">Четвертый</div>
<button class="btn">Sum</button>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

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

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

    function sum() {
        num.html(function(i){return $(this).html() + ' ' + ++i});
    }
</script>

Вместо $(this).html() можно использовать this.innerHTML
Ответить с цитированием
  #20 (permalink)  
Старый 05.09.2018, 15:36
Аспирант
Отправить личное сообщение для drakulawz Посмотреть профиль Найти все сообщения от drakulawz
 
Регистрация: 13.08.2018
Сообщений: 79

Сообщение от laimas
не оправдано для простых операций получать JQ объект из доступного DOM объекта.
Имеете в виду, что лучше делать нативными методами js?

Сообщение от Dilettante_Pro
Невнимательно смотрите примеры.
У Aetae объявление переменных
var $num = $('.p'),
Понял, я скопипастил только функцию... буду повнимательней.

Сообщение от Dilettante_Pro
Еще вариант - для разнообразия
А как функция понимает, что в num записаны цифры? Это в библиотеке jQuery всё приобразовывается?
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему так работает, а по-другому нет? 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