Javascript.RU

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

Как сделать для разных атрибутов id тега img?
Приветствую!
Вот здесь https://www.w3schools.com/howto/howt...dal_images.asp пример как делать всплывающее окно поверх сайта, ну или как это называется, модальное окно.

Мне тоже нужно такое сделать. Но я не пойму, как сделать этот код

// Get the modal
var modal = document.getElementById('myModal');

// Get the image and insert it inside the modal - use its "alt" text as a caption
var img = document.getElementById('myImg');
var modalImg = document.getElementById("img01");
var captionText = document.getElementById("caption");
img.onclick = function(){
    modal.style.display = "block";
    modalImg.src = this.src;
    captionText.innerHTML = this.alt;
}

// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close")[0];

// When the user clicks on <span> (x), close the modal
span.onclick = function() {
  modal.style.display = "none";
}


чтобы это работало с несколькими картинками ( id="myImg1", myImg2, myImg3), т.е. с разными атрибутами id тега img:
<img id="myImg1" src="img_fjords.jpg" alt="Trolltunga, Norway" width="300" height="200">
<img id="myImg2" src="img_fjords.jpg" alt="Trolltunga, Norway" width="300" height="200">
<img id="myImg3" src="img_fjords.jpg" alt="Trolltunga, Norway" width="300" height="200">


Подскажите пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 03.04.2017, 16:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Ola,
добавить class в картинки (строка 5 переделать на выборку по классу)и циклом по классу (строки 8-12 обернуть в цикл)
Ответить с цитированием
  #3 (permalink)  
Старый 03.04.2017, 16:52
Ola Ola вне форума
Интересующийся
Отправить личное сообщение для Ola Посмотреть профиль Найти все сообщения от Ola
 
Регистрация: 03.04.2017
Сообщений: 11

Можно по подробнее? Я новичек в джаваскрипте. Я тоже думала что-то про цикл, но не поняла можно ли его использовать. Цикл for? А зачем класс добавлять, разве нельзя id использовать?
Ответить с цитированием
  #4 (permalink)  
Старый 03.04.2017, 17:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Ola,
с классом проще
Ответить с цитированием
  #5 (permalink)  
Старый 03.04.2017, 17:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Ola,
<!DOCTYPE html>
<html>
<head>
<style>
#myImg {
    border-radius: 5px;
    cursor: pointer;
    transition: 0.3s;
}

#myImg:hover {opacity: 0.7;}

/* The Modal (background) */
.modal {
    display: none; /* Hidden by default */
    position: fixed; /* Stay in place */
    z-index: 1; /* Sit on top */
    padding-top: 100px; /* Location of the box */
    left: 0;
    top: 0;
    width: 100%; /* Full width */
    height: 100%; /* Full height */
    overflow: auto; /* Enable scroll if needed */
    background-color: rgb(0,0,0); /* Fallback color */
    background-color: rgba(0,0,0,0.9); /* Black w/ opacity */
}

/* Modal Content (image) */
.modal-content {
    margin: auto;
    display: block;
    width: 80%;
    max-width: 700px;
}

/* Caption of Modal Image */
#caption {
    margin: auto;
    display: block;
    width: 80%;
    max-width: 700px;
    text-align: center;
    color: #ccc;
    padding: 10px 0;
    height: 150px;
}

/* Add Animation */
.modal-content, #caption {
    -webkit-animation-name: zoom;
    -webkit-animation-duration: 0.6s;
    animation-name: zoom;
    animation-duration: 0.6s;
}

@-webkit-keyframes zoom {
    from {-webkit-transform:scale(0)}
    to {-webkit-transform:scale(1)}
}

@keyframes zoom {
    from {transform:scale(0)}
    to {transform:scale(1)}
}

/* The Close Button */
.close {
    position: absolute;
    top: 15px;
    right: 35px;
    color: #f1f1f1;
    font-size: 40px;
    font-weight: bold;
    transition: 0.3s;
}

.close:hover,
.close:focus {
    color: #bbb;
    text-decoration: none;
    cursor: pointer;
}

/* 100% Image Width on Smaller Screens */
@media only screen and (max-width: 700px){
    .modal-content {
        width: 100%;
    }
}
</style>
</head>
<body>

<h2>Image Modal</h2>
<p>In this example, we use CSS to create a modal (dialog box) that is hidden by default.</p>
<p>We use JavaScript to trigger the modal and to display the current image inside the modal when it is clicked on. Also note that we use the value from the image's "alt" attribute as an image caption text inside the modal.</p>

<img class="myImg" src="https://www.w3schools.com/howto/img_fjords.jpg" alt="Trolltunga, Norway" width="300" height="200">
<img class="myImg" src="http://familylab.fabrikait.lclients.ru/sites/5506d816190c3e26ec000002/assets/562a0d3f190c3ec60110c1b1/____.jpg" alt="Trolltunga, Norway" width="300" height="200">
<img class="myImg" src="http://bigtiger.ru/sites/default/files/styles/697x340_new_slider/public/offer/shutterstock_56606173.jpg" alt="Trolltunga, Norway" width="300" height="200">
<!-- The Modal -->
<div id="myModal" class="modal">
  <span class="close">&times;</span>
  <img class="modal-content" id="img01">
  <div id="caption"></div>
</div>

<script>
// Get the modal
var modal = document.getElementById('myModal');

// Get the image and insert it inside the modal - use its "alt" text as a caption
var img = document.querySelectorAll('.myImg');
var modalImg = document.getElementById("img01");
var captionText = document.getElementById("caption");
function show(){
    modal.style.display = "block";
    modalImg.src = this.src;
    captionText.innerHTML = this.alt;
}
[].forEach.call(img, function(item) {
        item.addEventListener('click', show, false);
    });
// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close")[0];

// When the user clicks on <span> (x), close the modal
span.onclick = function() {
    modal.style.display = "none";
}
</script>

</body>
</html>
Ответить с цитированием
  #6 (permalink)  
Старый 03.04.2017, 18:21
Ola Ola вне форума
Интересующийся
Отправить личное сообщение для Ola Посмотреть профиль Найти все сообщения от Ola
 
Регистрация: 03.04.2017
Сообщений: 11

Рони, вы просто гений! Спасибо большое! Не думала, что тут на форуме есть такие хорошие люди.
Ответить с цитированием
  #7 (permalink)  
Старый 09.04.2017, 13:41
Ola Ola вне форума
Интересующийся
Отправить личное сообщение для Ola Посмотреть профиль Найти все сообщения от Ola
 
Регистрация: 03.04.2017
Сообщений: 11

Еще вопросик
Код немного изменила для картинки, обернутой в тег <a>
<a class="myalink" href="https://www.w3schools.com/howto/img_fjords.jpg" target=_blank>
		<img class="alignnone wp-image-39 size-medium" src="https://www.w3schools.com/howto/img_fjords.jpg" alt="Альт текст" width="300" height="200">
	</a>

Только теперь хочется понять, как взять альт-текст картинки, относительно тега <a>?
Надо вместо строки
captionText.innerHTML = this.alt; //было

Что-то сделать. Я попробовала эти две строки поочереди, не помогло:
//captionText.innerHTML = this.getElementsByTagName('img').alt;
   //captionText.innerHTML = this.getElementsByTagName('img').getAttribute('alt');

Подскажите пожалуйста.
Вот код:
Код:
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
<style>
#myImg {
    border-radius: 5px;
    cursor: pointer;
    transition: 0.3s;
}

#myImg:hover {opacity: 0.7;}

/* The Modal (background) */
.modal {
    display: none; /* Hidden by default */
    position: fixed; /* Stay in place */
    z-index: 1; /* Sit on top */
    padding-top: 100px; /* Location of the box */
    left: 0;
    top: 0;
    width: 100%; /* Full width */
    height: 100%; /* Full height */
    overflow: auto; /* Enable scroll if needed */
    background-color: rgb(0,0,0); /* Fallback color */
    background-color: rgba(0,0,0,0.9); /* Black w/ opacity */
}

/* Modal Content (image) */
.modal-content {
    margin: auto;
    display: block;
   /* width: 80%;*/
   /* max-width: 1000px;*/
   
    
   
}

/* Caption of Modal Image */
#caption {
    margin: auto;
    display: block;
    width: 80%;
    max-width: 700px;
    text-align: center;
    color: #ccc;
    padding: 10px 0;
    height: 150px;
}

/* Add Animation */
.modal-content, #caption {
    -webkit-animation-name: zoom;
    -webkit-animation-duration: 0.6s;
    animation-name: zoom;
    animation-duration: 0.6s;
}

@-webkit-keyframes zoom {
    from {-webkit-transform:scale(0)}
    to {-webkit-transform:scale(1)}
}

@keyframes zoom {
    from {transform:scale(0)}
    to {transform:scale(1)}
}

/* The Close Button */
.close {
    position: absolute;
    top: 15px;
    right: 35px;
    color: #f1f1f1;
    font-size: 40px;
    font-weight: bold;
    transition: 0.3s;
}

.close:hover,
.close:focus {
    color: #bbb;
    text-decoration: none;
    cursor: pointer;
}

/* 100% Image Width on Smaller Screens */
@media only screen and (max-width: 700px){
    .modal-content {
        width: 100%;
    }
}

</style>
</head>
<body>

<h2>Image Modal</h2>
<p>In this example, we use CSS to create a modal (dialog box) that is hidden by default.</p>
<p>We use JavaScript to trigger the modal and to display the current image inside the modal when it is clicked on. Also note that we use the value from the image's "alt" attribute as an image caption text inside the modal.</p>
<div id="myid" class="content">
	
	

	<a class="myalink" href="https://www.w3schools.com/howto/img_fjords.jpg" target=_blank>
		<img class="alignnone wp-image-39 size-medium" src="https://www.w3schools.com/howto/img_fjords.jpg" alt="Альт текст" width="300" height="200">
	</a>
	
</div>




<!-- The Modal -->
<div id="myModal" class="modal">
  <span class="close">&times;</span>
  <img class="modal-content" id="img01">
  <div id="caption"></div>
</div>

<script>
// Get the modal
var modal = document.getElementById('myModal');

// Get the image and insert it inside the modal - use its "alt" text as a caption
var alink = document.querySelectorAll('.myalink');
var modalImg = document.getElementById("img01");
var captionText = document.getElementById("caption");

function show(){
    modal.style.display = "block";
    modalImg.src = this.href; 
    captionText.innerHTML = this.alt; //было
   //captionText.innerHTML = this.getElementsByTagName('img').alt;
   //captionText.innerHTML = this.getElementsByTagName('img').getAttribute('alt'); 
}
[].forEach.call(alink, function(item) {
        item.addEventListener('click', show, false);
    });
// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close")[0];

// When the user clicks on <span> (x), close the modal
span.onclick = function() {
    modal.style.display = "none";
}

document.links[0].onclick = function(event) {
   event.preventDefault();
};

</script>


</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 09.04.2017, 14:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Ola,
Сообщение от Ola
this.getElementsByTagName('img')[0]
список элементов из них выбрать нужный

Последний раз редактировалось рони, 09.04.2017 в 14:19.
Ответить с цитированием
  #9 (permalink)  
Старый 09.04.2017, 15:46
Ola Ola вне форума
Интересующийся
Отправить личное сообщение для Ola Посмотреть профиль Найти все сообщения от Ola
 
Регистрация: 03.04.2017
Сообщений: 11

Спасибо большое! Кажется работает.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать рендомный выбор и таймер через JSON API для CHATFUEL Satmax Общие вопросы Javascript 0 22.03.2017 21:32
Div внутри Div. Как сделать hover только для самого верхнего? Siend Общие вопросы Javascript 2 19.03.2015 22:16
поиск классов внутри тега yozuul jQuery 24 14.06.2013 22:00
Как сделать маску для рисунка Aljnk Общие вопросы Javascript 16 21.02.2011 17:08
Как сделать функцию типа toDataUrl для рисунка в ie6 ? Олег Общие вопросы Javascript 2 14.09.2008 00:06