Member 13502831 Ответов: 2

Какова здесь длина массива?


<!DOCTYPE html>
<html>
	<head>
		<title>Page Title</title>
	</head>
	<body>
		<p>hi</p>
        <p>hello</p>
        <p>hi</p>
        <script>
            var arr = document.getElementsByTagName("p");
            for (var x = 0; x < arr.length; x++) {
                arr[x].innerHTML = "Hi there";
            }
        </script>
	</body>
</html>


Что я уже пробовал:

Разве длина массива (arr.length) не равна 1, так как существует только 1 элемент "p"? Итак, как же это условие работает в этом коде, если x может быть только меньше длины массива?

2 Ответов

Рейтинг:
8

F-ES Sitecore

getElementsByTagName("p") получает все элементы <p>, и есть три элемента p, "hi", "hello" и второй "hi", поэтому arr.length будет 3, поэтому x будет циклически проходить через 0, 1, затем 2, поскольку массивы javascript доступны на нулевой базе, поэтому 0-это первый, 2-третий, поэтому он установит innerHTML всех трех элементов.


Рейтинг:
12

CPallini

На самом деле их три p элементы. Попробуй

<!DOCTYPE html>
<html>
	<head>
		<title>Page Title</title>
	</head>
	<body>
		<p>hi</p>
        <p>hello</p>
        <p>hi</p>
        <script>
            var arr = document.getElementsByTagName("p");
            for (var x = 0; x < arr.length; x++) {
                arr[x].innerHTML = "Hi there " + arr[x].textContent;
            }
        </script>
	</body>
</html>