Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.08.2017, 22:12
Интересующийся
Отправить личное сообщение для Bicou Посмотреть профиль Найти все сообщения от Bicou
 
Регистрация: 15.08.2017
Сообщений: 26

Массив в массиве
Это мой первый код "с нуля". Пытаюсь разобраться как что должно работать и на определенном этапе возник тупик.
Итак, есть массив из div.class в каждом из них содержатся теги img. Задача перебрать в каждом див все img и найти среди них с расширением gif
Просто img во всем документе я перебрала успешно. Код работал
var mas=document.getElementsByTagName('img');
for(i=0; i<mas.length;i++)
{
   ext=mas[i].src.split(".").pop();
   if(ext=="gif"){
    mas[i].src="http://forumavatars.ru/img/avatars/0014/21/71/4-1403302678.png";
   } 
};


Теперь пытаюсь задать перебор только в конкретных div Пробовала разные коды, не срабатывает
var mas2=document.getElementsByClassName("container");
var mas=document.getElementsByTagName('img');

for (j=0;j<mas2.length;j++){
    
for(i=0; i<mas.length;i++)
{
   ext=mas[i].src.split(".").pop();
   if(ext=="gif"){
   mas2[j].mas[i].src="http://forumavatars.ru/img/avatars/0014/21/71/4-1403302678.png"; } 
   }  
    
   
}

Что не правильно делаю?
Ответить с цитированием
  #2 (permalink)  
Старый 15.08.2017, 22:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,069

Bicou,
var mas2 = document.getElementsByClassName("container"),
    j, i, ext;
for (j = 0; j < mas2.length; j++) {
    var mas = mas2[j].getElementsByTagName("img");
    for (i = 0; i < mas.length; i++) {
        ext = mas[i].src.split(".").pop();
        if (ext == "gif") mas[i].src = "http://forumavatars.ru/img/avatars/0014/21/71/4-1403302678.png"
    }
};
Ответить с цитированием
  #3 (permalink)  
Старый 15.08.2017, 23:01
Интересующийся
Отправить личное сообщение для Bicou Посмотреть профиль Найти все сообщения от Bicou
 
Регистрация: 15.08.2017
Сообщений: 26

Спасибо!
Так пробовала. но почему-то не получилось. Может быть что-то с ошибкой написала. Хотя в консоли ничего не выводилось. Пошла разбираться. Спасибо
Ответить с цитированием
  #4 (permalink)  
Старый 15.08.2017, 23:03
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<html>
<head>
<style>
</style>
</head>
<body>
<div class="container">
	<img src="1.gif" alt="">
	<img src="1.png" alt="">
	<img src="2.gif" alt="">
	<img src="2.png" alt="">
</div>
	<script>
[].forEach.call(document.querySelectorAll('.container img[src$=".gif"]'), function (el){
 el.src = 'http://forumavatars.ru/img/avatars/0014/21/71/4-1403302678.png';
});
	</script>
</body>
</html>


можно проще
Ответить с цитированием
  #5 (permalink)  
Старый 15.08.2017, 23:05
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<html>
<head>
<style>
</style>
</head>
<body>
<div class="container">
	<img src="1.gif" alt="">
	<img src="1.png" alt="">
	<img src="2.gif" alt="">
	<img src="2.png" alt="">
</div>
	<script>
document.querySelectorAll('.container img[src$=".gif"]').forEach(el => el.src = 'http://forumavatars.ru/img/avatars/0014/21/71/4-1403302678.png');
	</script>
</body>
</html>


для современных браузеров
Ответить с цитированием
  #6 (permalink)  
Старый 15.08.2017, 23:31
Интересующийся
Отправить личное сообщение для Bicou Посмотреть профиль Найти все сообщения от Bicou
 
Регистрация: 15.08.2017
Сообщений: 26

j0hnik, спасибо
Ответить с цитированием
  #7 (permalink)  
Старый 16.08.2017, 00:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от j0hnik
для современных браузеров
Для имеющих поддержку. Обратите внимание на Android, который занимает приличную долю рынка.
Ответить с цитированием
  #8 (permalink)  
Старый 16.08.2017, 01:18
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

и опера и сафари уже поддерживают
https://caniuse.com/#search=arrow

не на то акцент делаете, такая конструкция
document.querySelectorAll(el).forEach

имеет меньшую поддержку чем стрелки.
Ответить с цитированием
  #9 (permalink)  
Старый 16.08.2017, 01:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от j0hnik
и опера и сафари уже поддерживают
Ваши устами да мед пить. К сожалению в реальности не все так радужно как хотелось бы. Пока разработчики не объявят бойкот вместо поддержки всего и вся, эта хрень будет продолжаться еще долго.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление объекта в массив в цикле Dark19 Элементы интерфейса 3 11.12.2016 23:11
Как найти совпадения в массиве и добавить их в двумерный массив? Armen Общие вопросы Javascript 4 23.04.2015 13:27
Массив из элементов другого массива, взятых в случайном порядке Basil_JS Общие вопросы Javascript 6 12.04.2015 13:07
Массив в массиве Viral Элементы интерфейса 11 07.12.2011 20:03
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14