@DarCKoder

Где же я просчитался??

Есть код:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>asd</title>

</head>
<body>
	<input type="button" id="myInput" value="Click Me">
	<input type="text" id="tIn">
	<p id="demo"></p>

	<script>
		var myInput = document.getElementById("myInput");
		var tIn = document.getElementById("tIn");
		var demo = document.getElementById("demo");


		myInput.onclick = function() {
			var theSpan = document.createElement('span');
			for (var i = 1072; i <= 1103; i++) {

				theSpan.innerHTML = "<br />" + i + " = " + String.fromCharCode(i);
				demo.appendChild(theSpan);
			};

		}
	</script>
</body>
</html>


При нажатии на "Click Me" должно было бы выводиться ниже
1072 = а
1073 = б
...
1103 = я

вместо этого выводится: 1103 = я , и так каждый раз при нажатии на кнопку, и больше ничего!
Почему не срабатывает цикл??
  • Вопрос задан
  • 248 просмотров
Решения вопроса 2
@dmitryKovalskiy
программист средней руки
Потому что вы не дописываете значение к текущему, а заменяете.
Попробуйте заменить
theSpan.innerHTML = "<br />" + i + " = " + String.fromCharCode(i);

на
theSpan.innerHTML + = "<br />" + i + " = " + String.fromCharCode(i);
Ответ написан
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
В ответах выше все строки будут записаны в один span
Если нужно много span то нужно перенести createElement внутрь цикла
Так же замечу, что манипуляции с реальным DOM в цикле не очень хорошая идея (ресурсозатратная), лучше сначала сформировать содержимое и один раз поменять DOM
Я бы Ваш пример сделал так:
var myInput = document.getElementById("myInput");
    var tIn = document.getElementById("tIn");
    var demo = document.getElementById("demo");
    var demoFragment = document.createDocumentFragment();

    myInput.onclick = function() {
      for (var i = 1072; i <= 1103; i++) {
        var theSpan = document.createElement('span');
        theSpan.innerHTML = "<br />" + i + " = " + String.fromCharCode(i);
        demoFragment.appendChild(theSpan);
      };
      demo.appendChild(demoFragment);
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект