Не могу вывести в поле значение выбранного пункта из списка

200
08 мая 2019, 22:10

По нажатию на любой из списка элемент, хочу чтоб значение нажатого элемента списка отображалось в блоке, в моем случае отображает underfiend, хочу спросить почему так происходит, укажите на мою ошибку пожалуйста

function func() { 
  var sound = document.getElementsByTagName('li'); 
  var a = []; 
  for (i = 0; i < sound.length; i++) { 
    a[i] += +sound[i].innerHTML; 
  } 
  document.getElementById('show_sound').innerHTML = a[i]; 
}
.list-item { 
  cursor: pointer; 
}
<div class="list"> 
  <ol class="list-item"> 
    <li onclick="func()">элемент списка 1</li> 
    <li onclick="func()">элемент списка 2</li> 
    <li onclick="func()">элемент списка 3</li> 
    <li onclick="func()">элемент списка 4</li> 
    <li onclick="func()">элемент списка 5</li> 
    <li onclick="func()">элемент списка 6</li> 
    <li onclick="func()">элемент списка 7</li> 
  </ol> 
</div> 
<div id="show_sound" class="sound"> 
 
</div>

Answer 1

Ещё один вариант - делегирование:

document.querySelector('.list-item').addEventListener('click', function(e) { 
  if (e.target.tagName == 'LI') { document.querySelector('.sound').innerHTML = e.target.innerHTML; } 
})
.list-item li:hover { cursor: pointer; color: red; }
<div class="list"> 
  <ol class="list-item"> 
    <li>элемент списка 1</li> 
    <li>элемент списка 2</li> 
    <li>элемент списка 3</li> 
    <li>элемент списка 4</li> 
    <li>элемент списка 5</li> 
    <li>элемент списка 6</li> 
    <li>элемент списка 7</li> 
  </ol> 
</div> 
<div id="show_sound" class="sound"></div>

Answer 2

Я бы так реализовал

[...sound = document.getElementsByTagName('li')].forEach(s => { 
  s.addEventListener('click', () => { 
    document.getElementById('show_sound').innerHTML += s.innerHTML 
  }) 
})
.list-item { 
  cursor: pointer; 
}
<div class="list"> 
  <ol class="list-item"> 
    <li>элемент списка 1</li> 
    <li>элемент списка 2</li> 
    <li>элемент списка 3</li> 
    <li>элемент списка 4</li> 
    <li>элемент списка 5</li> 
    <li>элемент списка 6</li> 
    <li>элемент списка 7</li> 
  </ol> 
</div> 
<div id="show_sound" class="sound"> 
 
</div>

Вариант два

let a = []; 
[...sound = document.getElementsByTagName('li')].forEach(s => { 
  s.addEventListener('click', () => { 
    a.push(s.innerHTML); 
    document.getElementById('show_sound').innerHTML = a 
 
  }) 
})
.list-item { 
  cursor: pointer; 
}
<div class="list"> 
  <ol class="list-item"> 
    <li>элемент списка 1</li> 
    <li>элемент списка 2</li> 
    <li>элемент списка 3</li> 
    <li>элемент списка 4</li> 
    <li>элемент списка 5</li> 
    <li>элемент списка 6</li> 
    <li>элемент списка 7</li> 
  </ol> 
</div> 
<div id="show_sound" class="sound"> 
 
</div>

Answer 3

var a = []; 
function func(i) { 
	var sound = document.getElementsByTagName('li'); 
    a = sound[i].innerHTML; 
  document.getElementById('show_sound').innerHTML = a; 
}
.list-item { 
  cursor: pointer; 
}
<div class="list"> 
  <ol class="list-item"> 
    <li onclick="func(0)">элемент списка 1</li> 
    <li onclick="func(1)">элемент списка 2</li> 
    <li onclick="func(2)">элемент списка 3</li> 
    <li onclick="func(3)">элемент списка 4</li> 
    <li onclick="func(4)">элемент списка 5</li> 
    <li onclick="func(5)">элемент списка 6</li> 
    <li onclick="func(6)">элемент списка 7</li> 
  </ol> 
</div> 
<div id="show_sound" class="sound">

У вас много лишнего кода и куча ошибок +sound[i].innerHTML- плюс в начале переобразовывает к числу зачем вам массив a[]? если нужно выводить одно значение? и в конце у вас выходит i = 7, а массив идет до a[6]

READ ALSO
Какому свойству в js , равно .width() в jquery? [закрыт]

Какому свойству в js , равно .width() в jquery? [закрыт]

Какому свойству в js , равноwidth() в jquery?

184
вывод компонентов reactjs

вывод компонентов reactjs

Прохожу курс "Основы Reactjs", 9 часть - "Жизненный цикл React-компонентов"(1 мин 30 сек)

188
Видео фон на javascript.Проблема со звуком. ctrl+F5

Видео фон на javascript.Проблема со звуком. ctrl+F5

Использую этот плагин для добавления видео на сайт в фоновом режиме - https://githubcom/Victa/HTML5-Background-Video

227
Как правильно взять value от input-а и передать в React

Как правильно взять value от input-а и передать в React

есть текстовой input и button, при нажатии на button, value от inputa должен передаться компонентСейчас при каждом изменении value сохраняется в state, а при...

177