Javascript.RU

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

Проблема с document.getElementsByClassName....
Всем здравствуйте, подскажите мне пожалуйста, в чем моя ошибка.
Цель следующая: Необходимо чтобы при нажатии на картинку появлялся блок (в данном случае там только текст).

Ошибку я допустил именно в строке document.getElementsByClassName... так как если вставить вывод чего-либо после это записи, он просто не выводится. Много разной информации прочитал по этому поводу, но либо я дурак, либо лыжи не едут... Надеюсь на вашу помощь..
<head>
		<meta charset="utf-8">
		<title>Текст</title>
		<link href="style-create.css" rel="stylesheet">
		<script src="../game/skr.js"></script>
	</head>
<body>
		<div id="classes">
			<input id="archer" type="image" src="../game/img/archer.jpg" onClick="Archer()">
			<input id="mag" type="image" src="../game/img/mag.jpg" onClick="Mag()">
		</div>
		
		<div id="content">
			<div class="archer">
				<p>текст текст текст</p>
			</div>
		</div>
	</body>

'use strict';
function Archer() { 
	document.body.style.background = "red";
	document.getElementsByClassName('archer').style.display = "block";
};
function Mag() { 
	document.body.style.background = "white";
};

Код:
.archer {
	display: none;
}
Ответить с цитированием
  #2 (permalink)  
Старый 27.11.2015, 06:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от Kweli
getElementsByClassName
[0] индекс нужен
Ответить с цитированием
  #3 (permalink)  
Старый 27.11.2015, 11:59
Новичок на форуме
Отправить личное сообщение для Kweli Посмотреть профиль Найти все сообщения от Kweli
 
Регистрация: 27.11.2015
Сообщений: 2

Сообщение от рони Посмотреть сообщение
[0] индекс нужен
Большое спасибо, если не сложно ответьте на несколько вопросов.
Индекс обозначает номер элемента?
Если да, то как выбрать все элементы с таким классом?
Обязательно ли нужен индекс при ...ClassName... ?
Ответить с цитированием
  #4 (permalink)  
Старый 27.11.2015, 12:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от Kweli
Обязательно ли нужен индекс
да
Сообщение от Kweli
Индекс обозначает номер элемента?
да
Сообщение от Kweli
выбрать все элементы с таким классом?
[].forEach.call( document.querySelectorAll('.archer'), function(el) {
       el.style.width = "10%";
       el.classList.add('mini');
});
Ответить с цитированием
  #5 (permalink)  
Старый 27.11.2015, 12:43
Аватар для Leon-on12
Аспирант
Отправить личное сообщение для Leon-on12 Посмотреть профиль Найти все сообщения от Leon-on12
 
Регистрация: 07.04.2015
Сообщений: 65

Важно обращать внимание на название метода.
getElementById И
getElementsByTagName

В виду неиспользования библиотек, все элементы с классом я выбираю счётчиком. Не знаю правильно ли это? Но получается что-то такое:

var elem = document.getElementsByClassName("class")
for (var i=0;i<elem.length;i++)
		elem[i]//...

Последний раз редактировалось Leon-on12, 27.11.2015 в 13:06. Причина: document.getElementsByClassName("class") -> elem
Ответить с цитированием
  #6 (permalink)  
Старый 27.11.2015, 12:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от Leon-on12
правильно ли это?
да
только не
Сообщение от Leon-on12
document.getElementsByClassName("serBlock")[i]//...
а elem[0], зачем искать то что уже найдено
Ответить с цитированием
  #7 (permalink)  
Старый 27.11.2015, 13:00
Аватар для Leon-on12
Аспирант
Отправить личное сообщение для Leon-on12 Посмотреть профиль Найти все сообщения от Leon-on12
 
Регистрация: 07.04.2015
Сообщений: 65

рони,

Да, точно. Всё пытаюсь приучить себя назначать на элементы переменные. Но иногда забываю.
Вот сейчас загуглил. Всё время казалось что querySelectorAll это jquerевская штука.
Вопрос к тебе лично как к профессионалу, Рони. Стоит ли кидаться менять все getElementы сроно на querySelectorAll?
Ответить с цитированием
  #8 (permalink)  
Старый 27.11.2015, 13:11
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от Leon-on12 Посмотреть сообщение
Стоит ли кидаться менять все getElementы сроно на querySelectorAll?
Они не одно и тоже у них есть существенное различие getElementы возвращают "живые" коллекции, а querySelectorAll нет. Если "живость" необходима тогда менять не стоит...
Ответить с цитированием
  #9 (permalink)  
Старый 27.11.2015, 13:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Leon-on12,
document.getElementById() это нет смысла менять, остальное если работает, то лучше не трогать иногда
getElements - удобно тем что всегда содержит актуальные данные , querySelectorAll делает снимок на момент поиска.
из-за актуальности getElements если что-то меняют то идут с конца коллекции(это так на всякий)i=elem.length - 1
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с радио кнопками px379 Общие вопросы Javascript 8 29.07.2013 09:30
Проблема с обработкой ескольких .hover() anocean jQuery 3 15.06.2012 22:43
Проблема с дизайном после отправки xmlhttprequest, Проблема с дизайном после отправки cyberx AJAX и COMET 3 01.05.2010 17:07
Проблема, в менюшке Большой джо Элементы интерфейса 0 12.07.2009 17:12
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47