Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   новичку нужна помощь с циклом (https://javascript.ru/forum/misc/71335-novichku-nuzhna-pomoshh-s-ciklom.html)

bombino1 11.11.2017 13:47

новичку нужна помощь с циклом
 
Привет всем. Я написал крохотный скрипт для greasemonkey, который на лету меняет в все id товаров на один, нужный мне:

// ==/UserScript==

document.getElementById("product_138649").value = "138503";
document.getElementById("product_138641").value = "138503";
document.getElementById("product_138491").value = "138503";
document.getElementById("product_138645").value = "138503";
document.getElementById("product_138653").value = "138503";
document.getElementById("product_138661").value = "138503";
document.getElementById("product_138671").value = "138503";

все работает, но иногда product_##### меняются, убираются магазином, и тогда скрипт не срабатывает, не найдя определенный product. Можно ли как-то сделать мою замену циклом, и с маской, чтоб value 138503 присваивался всем product_* ? Спасибо!

laimas 11.11.2017 14:03

var p = document.querySelectorAll('[id^=product_]');


Это коллекция. Далее можно ее и циклом for обойти и сотворить нужное.

bombino1 11.11.2017 14:15

спасибо за быстрый ответ, попробую, хотя циклы еще не изучал, может получится

Nexus 11.11.2017 14:18

[].forEach.call(document.querySelectorAll('[id^=product_]'),function(node){
	node.value=138503;
});

bombino1 11.11.2017 14:38

Nexus: потрясающе, спасибо, всё работает!

bombino1 28.03.2021 20:23

Привет все, такой вопрос, какой командой можно удалить всех моделей сайта кто в оффлайне, вот скриншот https://thumb.cloud.mail.ru/weblink/...npht%40mail.ru желтым я обвёл всех моделей у кого такой статус. Можно ли их всех скрыть, свернуть, не загружать? Просто их сотни и они очень тормозят при авторефреше, и подтягивают ненужную графику.. Мне в прошлый раз помогли алгоритмом поиска, вроде так должно сработать, но затык как раз в команде удаления всего что совпало с 'offline':

// ==UserScript==
// @name        auto
// @namespace   phonemates.com
// @include     *[url]https://phonemates.com/myfavorites*[/url]
// @version     1
// @grant       GM_openInTab
// ==/UserScript==



function getOfflineLinks() {
  return Array.prototype.filter.call(
    document.querySelectorAll('.hcm-hostNameWrapper + .hcm-rightBottomIcons .chatType'),
    element => element.textContent.trim() === 'Offline'
  ).map(
    element => element
      .closest('.hcm-rightBottomIcons')
      .previousElementSibling
  )
}


исходник страницы: https://cloud.mail.ru/public/ugE3/YKrao836r

на сайте 3 категории статусов, идут в очерёдности: free, private, и под конец offline (которых и хочется вовсе не подгружать, обрезать страницу до них).
Спасибо!

bombino1 30.03.2021 22:31

друзья-товарищи, подсобите пожалуйста, ведь там пару строчек всего кода. Сбил все руки-ноги, ничего не получается

Aetae 30.03.2021 23:25

bombino1,
function removeAndHideOffline() {
  document.body.insertAdjacentHTML('beforeend', '<style>.layoutWrapper > .hc-offline{display: none}</style>');
  document.querySelectorAll('.layoutWrapper > .hc-offline').forEach(
    element => element.parentNode.remove()
  )
}
removeAndHideOffline()

bombino1 31.03.2021 11:16

Огромное спасибо, как часы сработало, как и всегда!

bombino1 17.10.2021 18:14

Можно ли находясь в обычном режиме Firefox-a, открыть ссылку в JS именно в режиме incognito? Час гугления показал что windows.create() имеет ключ incognito, но синтаксис пишет ошибку в tampermonkey, возможно работает только в developer's add-on, спасибо большое!


Часовой пояс GMT +3, время: 12:55.