Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вместо onclick (https://javascript.ru/forum/misc/70941-vmesto-onclick.html)

Sonya 13.10.2017 17:51

Вместо onclick
 
Здравствуйте! Помогите, пожалуйста. Приведенный ниже код, добавляет текст на страницу по клику на span, после элемента span.
<div class="raz">
<span>Здесь что-то</span>
</div>
<script>
document.querySelector('.raz span').onclick = function() {
  var theDiv = document.createElement('div');
  theDiv.innerHTML = 'HTML-содержимое';
  this.parentNode.insertBefore(theDiv, this.nextSibling);
  getComputedStyle(theDiv).opacity;
  theDiv.style.opacity = '1';
}
</script>

Можно ли, чтобы он это делал без клика (onload не помогает)?

Nexus 13.10.2017 17:59

Может так?
<div class="raz">
<span>Здесь что-то</span>
</div>
<script>
document.addEventListener('DOMContentLoaded',function() {
  var theDiv = document.createElement('div');
  theDiv.innerHTML = 'HTML-содержимое';
  document.querySelector('.raz span').parentNode.insertBefore(theDiv, this.nextSibling);
  getComputedStyle(theDiv).opacity;
  theDiv.style.opacity = '1';
},false);
</script>

Sonya 13.10.2017 18:05

Да, спасибо, работает.

Sonya 13.10.2017 18:50

Только почему-то в том случае, когда я хочу поставить текст до spain заменяя this.nextSibling на this.previousSibling, не получается. Хотя по клику ставит:
<div class="raz">
<span>Здесь что-то</span>
</div>
<script>
document.querySelector('.raz span').onclick = function() {
  var theDiv = document.createElement('div');
  theDiv.innerHTML = 'HTML-содержимое';
  this.parentNode.insertBefore(theDiv, this.previousSibling);
  getComputedStyle(theDiv).opacity;
  theDiv.style.opacity = '1';
}
</script>

Не подскажите почему?

Dilettante_Pro 13.10.2017 19:01

<div class="raz">
<span>Здесь что-то</span>
</div>
<script>
document.addEventListener('DOMContentLoaded',function() {
  var theDiv = document.createElement('div');
  theDiv.innerHTML = 'HTML-содержимое';
  document.querySelector('.raz').insertBefore(theDiv,this.querySelector('span'));
  getComputedStyle(theDiv).opacity;
  theDiv.style.opacity = '1';
},false);
</script>

Sonya 13.10.2017 19:10

Спасибо!


Часовой пояс GMT +3, время: 06:09.