2015-11-20 3 views
-1

Я изучаю javascript с нуля. В настоящее время я пытаюсь понять DOM. У меня есть HTML-страницы, как это:document.body.getElementById и document.getElementById разница

<html> 
<head> 
    <title>javascript</title> 
</head> 
<body> 
    <h1>Welcome to javascript</h1> 

    Visit me <a href="facebook.com">here.</a> 

    <p> <img id="image" src="kalam.jpg"></p> 

    <script type="text/javascript" src="code.js"> 
    </script> 
</body> 
</html> 

Теперь я хочу, чтобы читать a теги.

var links = document.body.getElementsByTagName("a")[0]; 

console.log(links.href); 

Он отлично работает. Теперь я хочу прочитать изображение.

var imageLink = document.body.getElementById("image"); 

console.log(imageLink.src); 

Но, вышеуказанный код не работает.

Я получаю сообщение об ошибке:

Uncaught TypeError: document.body.getElementById is not a function.

Изменение его:

var imageLink = document.getElementById("image"); 

console.log(imageLink.src); 

работает отлично.

Мой вопрос касается разницы между document.body.getEl... и document.getEl..?

document.body читает только часть кузова, а document.getEl.. читает весь документ, включая названия и т. Д.? Если это так, то не должен работать оба вышеуказанных кода?

+1

'document.body' не имеет' getElementById'. –

+1

'документ.body.getElementById' не существует как код - не уверен, где вы получили это от –

+0

Термин «не работает» слишком расплывчатый, чтобы быть полезным; если вы собираетесь использовать его снова на SO, убедитесь, что он сопровождается последующим объяснением того, что это на самом деле означает. Из-за этого возникает ошибка/исключение? Это дает неправильный результат? –

ответ

7

document.getElementById() получает элемент с идентификатором соответствия из документа.

document.body.getElementById() не существует.

document.getElementsByTagName() получает все элементы, соответствующие названию тега из документа.

someOtherElement.getElementsByTagName получает все элементы, которые соответствуют имени тега и которые являются потомками someOtherElement.

Поскольку идентификатор должен быть глобально уникальным в документе HTML, как правило, нет необходимости в том, чтобы метод getElementById существовал где угодно, кроме самого объекта document.

+0

Благодарим вас за объяснение. Я ничего не получал. – learner

0

getElementById является функцией объекта документа (так что просто не существует в document.body)

getElementsByTagName является функцией любого элемента йота (в том числе document.body) ,

0

Использование document.getElementById вы извлекаете определенный элемент с указанным ID на странице. Идентификаторы должны быть уникальными для каждого элемента на странице. при использовании document.form (или любого другого) вы «отфильтровываете» свой выбор.

0

Я думаю, если вы новичок в этом может быть стоит использовать

document.querySelectorAll('a')[0] 
document.querySelector('#image') 
document.querySelector('.someclass') 

только потому, что он делает тег, идентификатор и класс все в одном.

+0

Благодарим вас за это. Я читаю http://eloquentjavascript.net/. Пожалуйста, предоставьте мне и другие ссылки. – learner

Смежные вопросы