Здравствуйте!
Смысл простой очень, нужно чтобы при нажатии на определенную кнопку button открывался div с определенный текстом (текст разный для каждой кнопки). Вопрос в том как можно проще это реализовать. Это нужно будет для каждого button присваивать отдельный id и создавать отдельную функцию для каждой кнопки (которая рисует div с нужным текстом) или есть более гуманные способы?
p/s кто-то через class советовал делать, но тогда я не понимаю как это работает, ведь по классу не обратишься к конкретному тексту.
<html>
<head>
<script type="text/javascript" src="test.js"></script>
<title>ariadna wiki</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div>
<ul>
<button> </button>
<button> </button>
<button> </button>
<button> </button>
<button> </button>
<button> </button>
<button> </button>
<button> </button>
<button> </button>
<button> </button>
</ul>
</div>
</body>
</html>
Обновление: Если у вас уже есть дивы с текстом можете их связать с кнопками например по атрибуту name
var elems = document.getElementsByTagName('button');
for (var i = 0; i < elems.length; i++) elems[i].addEventListener("click", handler);
var current;
function handler(event) {
if (current) current.style.display = 'none';
var name = event.target.getAttribute('name');
current = document.querySelector(`div[name="${name}"]`);
current.style.display = 'block';
};
div {
display: none
}
.menu {
display: block
}
<div class='menu'>
<ul>
<button name="Первый">1</button>
<button name="Второй">2</button>
<button name="Третий">3</button>
<button name="Четвертый">4</button>
<button name="Пятый">5</button>
<button name="Шестой">6</button>
<button name="Седьмой">7</button>
<button name="Восьмой">8</button>
<button name="Девятый">9</button>
<button name="Десятый">10</button>
</ul>
</div>
<div name="Первый">1</div>
<div name="Второй">2</div>
<div name="Третий">3</div>
<div name="Четвертый">4</div>
<div name="Пятый">5</div>
<div name="Шестой">6</div>
<div name="Седьмой">7</div>
<div name="Восьмой">8</div>
<div name="Девятый">9</div>
<div name="Десятый">10</div>
Или можно например отображаемый текст в атрибутах хранить и подставлять куда надо.
var elems = document.getElementsByTagName('button');
for (var i = 0; i < elems.length; i++) elems[i].addEventListener("click", handler);
function handler(event) {
document.getElementById('container').innerText = event.target.getAttribute('text');
};
<div>
<ul>
<button text="Первый">1</button>
<button text="Второй">2</button>
<button text="Третий">3</button>
<button text="Четвертый">4</button>
<button text="Пятый">5</button>
<button text="Шестой">6</button>
<button text="Седьмой">7</button>
<button text="Восьмой">8</button>
<button text="Девятый">9</button>
<button text="Десятый">10</button>
</ul>
</div>
<div id="container">
Пустой
</div>
Если кнопки внутри своего контейнера идут в том же порядке что и div'ы внутри своего контейнера, тогда можно открывать div'ы по индексу кнопок:
var buttons = document.querySelectorAll('ul button');
for(var i = 0; i < buttons.length; i++) {
(function(index){
buttons[i].addEventListener('click', function(){
var divIndex = index*1+1*1;
document.querySelector('.divs div:nth-of-type('+divIndex+')').style.background = 'red'; // здесь прикрутите открытие блока
});
})(i);
}
<ul>
<button>Кнопка 1</button>
<button>Кнопка 2</button>
</ul>
<div class="divs">
<div>Текст блока 1</div>
<div>Текст блока 2</div>
</div>
где .divs
- это контейнер с div'ами (можете поменять на свой класс)
Виртуальный выделенный сервер (VDS) становится отличным выбором
В консоли видно, что src меняется, но отображаемый pdf остается прежним
Добрый деньПолучаю ошибку рендера в следующей ситуации
Стандартный способ это подгрузить мини блок и стили для него, в потом скрытьДля этого устанавливается таймер