Добавить элемент списка через javascript
Итак, я пытаюсь распечатать массив, который получает текст ввода пользователя, добавленный к нему, но то, что я хочу распечатать, - это упорядоченный список массива. Как вы можете видеть, (если вы запустите мой код) элемент списка просто продолжает добавлять к нему пользовательский ввод, а новые имена не добавляются с именами людей. Пожалуйста помоги! Вот код ниже:
<!DOCTYPE html>
<html>
<head>
First name: <input type="text" id="firstname"><br>
<script type="text/javascript">
var x= [];
function changeText2(){
var firstname = document.getElementById('firstname').value;
document.getElementById('boldStuff2').innerHTML = firstname;
x.push(firstname);
document.getElementById('demo').innerHTML = x;
}
</script>
<p>Your first name is: <b id='boldStuff2'></b> </p>
<p> Other people names: </p>
<ol>
<li id = "demo"> </li>
</ol>
<input type='button' onclick='changeText2()' value='Submit'/>
</head>
<body>
</body>
</html>
Ответы
Ответ 1
Если вы хотите создать элемент li
для каждого ввода/имени, тогда вы должны его создать, document.createElement
[MDN].
Дайте списку ID:
<ol id="demo"></ol>
и получите ссылку на него:
var list = document.getElementById('demo');
В обработчике событий создайте новый элемент списка со значением ввода в качестве содержимого и добавьте его в список Node.appendChild
[MDN]:
var firstname = document.getElementById('firstname').value;
var entry = document.createElement('li');
entry.appendChild(document.createTextNode(firstname));
list.appendChild(entry);
DEMO
Ответ 2
Попробуйте что-то вроде этого:
var node=document.createElement("LI");
var textnode=document.createTextNode(firstname);
node.appendChild(textnode);
document.getElementById("demo").appendChild(node);
Fiddle: http://jsfiddle.net/FlameTrap/3jDZd/
Ответ 3
Недавно мне представили эту проблему и наткнулся на эту тему, но нашел более простое решение, используя append...
var firstname = $('#firstname').val();
$('ol').append( '<li>' + firstname + '</li>' );
Сохраните первое имя, а затем используйте append
, чтобы добавить это значение как li
в ol
. Надеюсь, это поможет:)
Ответ 4
Вышеприведенный ответ был полезен для меня, но было бы полезно (или передовая практика) добавить имя в submit, как я это сделал. Надеюсь, это будет полезно кому-то. Пример CodePen
<form id="formAddName">
<fieldset>
<legend>Add Name </legend>
<label for="firstName">First Name</label>
<input type="text" id="firstName" name="firstName" />
<button>Add</button>
</fieldset>
</form>
<ol id="demo"></ol>
<script>
var list = document.getElementById('demo');
var entry = document.getElementById('formAddName');
entry.onsubmit = function(evt) {
evt.preventDefault();
var firstName = document.getElementById('firstName').value;
var entry = document.createElement('li');
entry.appendChild(document.createTextNode(firstName));
list.appendChild(entry);
}
</script>