Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
2 / 2 / 0
Регистрация: 26.11.2013
Сообщений: 248

Onclick для всех картин

20.08.2016, 11:40. Показов 1951. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можно ли применить
JavaScript
1
onclick = 'openImageWindow(this.src);'
ко всем картинам внутри конкретного div-а?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.08.2016, 11:40
Ответы с готовыми решениями:

Вызвать onclick для всех ссылок на сайте
Добрый день! Задача состоит в следующем: Нужно прокликать все ссылки на сайте, пробовал сделать так: <a href="ссылка"...

Реализовать событие onclick для всех элементов
Суть проблемы: Есть таблица в div'e 6 на 6 элементов (квадратов), при нажатии на любой из квадратов, этот самый квадрат должен исчезать....

Запуск onClick для всех дочерных тегов
Собственно есть код: <div class="example_path"> <div onClick="test2(this)" class="example_test2"></div> <div...

13
Эксперт JSЭксперт HTML/CSS
 Аватар для mrtoxas
3827 / 2677 / 1521
Регистрация: 12.07.2015
Сообщений: 6,672
Записей в блоге: 4
20.08.2016, 13:31
HTML5
1
2
3
4
<div class="wrapper">
  <img class="imgGetSize" src="" alt="" />
  <img class="imgGetSize" src="" alt="" /> 
</div>
JavaScript
1
2
3
4
5
6
7
8
9
var images = document.querySelectorAll('.wrapper > img');
images.forEach(function(elem){
  elem.onclick= function openImageWindow() {
    var image = new Image();     
    var width = this.width;
    var height = this.height;
    window.open(this.src,"Image","width=" + width + ",height=" + height);
  }
});
0
2 / 2 / 0
Регистрация: 26.11.2013
Сообщений: 248
21.08.2016, 10:48  [ТС]
mrtoxas, дело в том, что в тэги <img> вписать ничего не могу. Единственное, могу весь текст с <img> -ами разместить в блок. Т.е., JS должен обрабатывать все картины в wrapper-e, а class="imgGetSize" не должно быть.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для mrtoxas
3827 / 2677 / 1521
Регистрация: 12.07.2015
Сообщений: 6,672
Записей в блоге: 4
21.08.2016, 10:52
Убирайте класс из тэгов. Это я экспериментировал и забыл удалить. Выборка идет по .wrapper > img
0
2 / 2 / 0
Регистрация: 26.11.2013
Сообщений: 248
21.08.2016, 12:44  [ТС]
mrtoxas, да, я уже догадалась. Но не работает.
Думаю дело в том, что на самом деле в wrapper могут быть другие div-ы, и в них только картины.
wrapper > img означает прямая внедренность?
0
Эксперт JSЭксперт HTML/CSS
 Аватар для mrtoxas
3827 / 2677 / 1521
Регистрация: 12.07.2015
Сообщений: 6,672
Записей в блоге: 4
21.08.2016, 12:55
Это означает непосредственный потомок. Попробуйте без ">". Я ж не знаю структуру документа
0
2 / 2 / 0
Регистрация: 26.11.2013
Сообщений: 248
21.08.2016, 12:58  [ТС]
mrtoxas, тоже нет
а .wrapper > div> img
должен ведь работать... а не работает
0
Эксперт JSЭксперт HTML/CSS
 Аватар для mrtoxas
3827 / 2677 / 1521
Регистрация: 12.07.2015
Сообщений: 6,672
Записей в блоге: 4
21.08.2016, 13:05
Дайте структуру html

Добавлено через 5 минут
querySelectorAll('.wrapper img') зацепит абсолютно все <img>, которые вложены в .wrapper, вне зависимости от их дальнейших вложенностей.
0
2 / 2 / 0
Регистрация: 26.11.2013
Сообщений: 248
21.08.2016, 13:08  [ТС]
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<html>
<head>....</head>
<body>
....
<div class="secdes">
.....текст статьи....
</div>
 
<script type="text/javascript">
var images = document.querySelectorAll('.secdes > img');
images.forEach(function(elem){
  elem.onclick= function openImageWindow() {
    var image = new Image();     
    var width = this.width;
    var height = this.height;
    window.open(this.src,"Image","width=" + width + ",height=" + height);
  }
});
</script>
 
</body>
.....текст статьи.... это текст созданный в wysiwyg редакторе, т.е. там может быть все что угодно. И для всех картин там нужно применить этот скрипт.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для mrtoxas
3827 / 2677 / 1521
Регистрация: 12.07.2015
Сообщений: 6,672
Записей в блоге: 4
21.08.2016, 13:14
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<div class="wrapper">
  <p>Tекст стати</p>
  <img src="#" alt="" />
  <div class="secdes">
    <p>Tекст стати</p>
    <img src="#" alt="" />
    <div class="secdes_second">
      <p>Tекст стати</p>
      <img src="#" alt="" />
    </div>
  </div>
</div>
JavaScript
1
2
3
4
5
6
7
8
9
var images = document.querySelectorAll('.wrapper img');
images.forEach(function(elem){
  elem.onclick= function openImageWindow() {
    var image = new Image();     
    var width = this.width;
    var height = this.height;
    window.open(this.src,"Image","width=" + width + ",height=" + height);
  }
});
Результат
1
2 / 2 / 0
Регистрация: 26.11.2013
Сообщений: 248
21.08.2016, 13:24  [ТС]
mrtoxas, оказывается не работает в firefox, а в гуглхром нормально. Не знаете, отчего это?
Кроме того, картины в новом окне не показываются оригинальным размером, а надо так.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для mrtoxas
3827 / 2677 / 1521
Регистрация: 12.07.2015
Сообщений: 6,672
Записей в блоге: 4
21.08.2016, 13:49
Лучший ответ Сообщение было отмечено khrustal как решение

Решение

почему-то forEach не срабатывает. Попробуйте циклом, правда не уверен в правильности решения, может кто поправит:
JavaScript
1
2
3
4
5
6
7
8
9
var images = document.querySelectorAll('.wrapper img');
  for (i = 0; i < images.length; ++i) {  
  images[i].onclick= function openImageWindow() {    
    var image = new Image();     
    var width = this.width;
    var height = this.height;
    window.open(this.src,"Image","width=" + width + ",height=" + height);
  }
}
Добавлено через 13 минут
Вот, так лучше:
JavaScript
1
2
3
4
5
6
7
8
9
var images = document.querySelectorAll('.wrapper img');
[].forEach.call(images, function(elem) {
   elem.addEventListener("click", function(){ 
    var image = new Image();     
    var width = this.width;
    var height = this.height;
    window.open(this.src,"Image","width=" + width + ",height=" + height);
  });
});
1
2 / 2 / 0
Регистрация: 26.11.2013
Сообщений: 248
21.08.2016, 14:08  [ТС]
Спасибо большое, сработало.
Еще если можно немного доделать. Можно ли сделать так, чтобы это новое окно
1. имело размер картины (теперь оно имеет размер картины, которое указано в html коде, а там картина показывается в уменьшенном размере)
2. окно не имело строки, где указан URL
3. окно закрывалось при клике вне пределах окна
0
Эксперт JSЭксперт HTML/CSS
 Аватар для mrtoxas
3827 / 2677 / 1521
Регистрация: 12.07.2015
Сообщений: 6,672
Записей в блоге: 4
21.08.2016, 15:38
Я думаю, такое надо делать не через открытие окна, а при помощи css. Через JS только подгружать картинки в блок и задавать ему размеры.

Добавлено через 1 час 17 минут
Надо допиливать, и придумать как загружать полную картинку, но смысл такой:
HTML5
1
2
3
4
5
6
7
8
<div class="wrapper">
  <p>Tекст стати</p>
   <img src="#" alt="" />
  <div class="secdes">
    <p>Tекст стати</p> 
    <img src="#" alt="" />
  </div> 
</div>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var images = document.querySelectorAll('.wrapper img');
var poPupDiv = document.createElement('div');
poPupDiv.className = "pop-up";
poPupDiv.style.width = '100%';
poPupDiv.style.height = '100%';
poPupDiv.style.top = '0';
poPupDiv.style.left = '0';
poPupDiv.style.display = 'none';
poPupDiv.style.position = 'fixed';
poPupDiv.style.background = 'rgba(0,0,0,.8)';
document.body.appendChild(poPupDiv);
var poPup = document.querySelector('.pop-up');
poPup.onclick = function() {
      this.style.display='none';
    }
images.forEach(function(elem) {
    elem.onclick = function openImageWindow() {
    poPupDiv.style.display = 'block';
    imgHeight = getComputedStyle(elem).height;
    imgWidth = getComputedStyle(elem).width;
    poPup.innerHTML = '<img src="' + elem.src + '" alt="" \
        style="position:fixed;top:50%;left:50%;\
        transform:translate(-50%,-50%);background:#fff";/>';        
  }
});
Результат
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.08.2016, 15:38
Помогаю со студенческими работами здесь

Выделение всех чекбоксов + onClick
У меня такая проблема: есть 3 элемента checkbox, которые при нажатии на каждый из них onClick, активируют функции, которые в свою очередь...

OnClick для div-а, но не для input-а в нем
есть div, в нем form, в форме - input текстовый код &lt;div id=&quot;search_box&quot; onClick=&quot;clickSearch(1);&quot;&gt; &lt;form...

Событие onclick для php
описываю суть проблемы: в php форме есть элемент button $this-&gt;addElement('Button', 'submit', array( 'label'...

Не работает функция onClick для позиционированного div
Изучаю Javascript и пытаюсь написать простенький скрипт Не могу понять, почему функция onClick, примененная к div, прекрасно работает, но...

Не работает onclick для динамически вставляемого на страницу html
Доброго всем времени суток! Хочу сделать на сайте список с вариантами как в google. Делаю так: на странице текстовое поле и невидимый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Контроль корректности заполнения дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru