Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2013, 23:06   #1
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию ошибка в firstChild.style

Всем привет.

Такой вопрос.

есть вот такой скрипт.

Код HTML:
window.onload = function(){
	var divs = document.getElementsByTagName('div');
		for(var i=0; i < divs.length; i++){
			divs[i].onclick = go;				
		}
}

function go(){
	this.firstChild.nodeValue = 'text';
	this.firstChild.style.marginLeft = "25px";
}
И вот такой кусок разметки.

Код HTML:
<div class="testBox">
		<p class="balon">test 1</p>
</div>

<div class="testBox">
		<p class="balon">test 2</p>
</div>

<div class="testBox">
		<p class="balon">test 3</p>
</div>

Проблема вот в чём.
При клике по ДИВУ идёт присваивание this.firstChild.nodeValue = 'text';

Должен исчезать старый текст и присваиваться новый.
А происходит только добавление нового куска и причём перед старым.

Получается что он его рассматривает как отдельный узел ? но почему ?

А главная проблема, вот в этом this.firstChild.style.marginLeft = "25px";

Браузер ругается и сообщает следующее.
Uncaught TypeError: Cannot set property 'marginLeft' of undefined

Не могу понять, как одно свойство я могу изменить а другое нет ?
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 19.02.2013, 09:28   #2
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Потому что первый элемент — это пустой текстовый узел, который собственно и наполняется текстом "text". Стилей он не имеет.
Поиск идет по всем узлам (комментарии, текст), а не только по тэгам.
Код:
<div><p>hello <!--and good bye--> <b>world</b></p>
Тут, к примеру 7 узлов:
Код:
div
  p
    t:hello\s
    c:and good bye
    t:\s
    b
      world
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 23.02.2013, 22:34   #3
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Спасибо ))) теперь понятно
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Metro style в Windows 8 Liberum HTML и CSS 15 18.06.2012 23:06
Ошибка error C2447: missing function header (old-style formal list?) AnryFlame Visual C++ 9 11.04.2012 14:40
ComboBox1 Style Shouldercannon Общие вопросы Delphi 5 12.01.2012 16:39
Поле style LordPingvin HTML и CSS 4 03.05.2011 15:56
Canvas.Font.Style := Label.Font.Style; не выходит ArtGrek Общие вопросы Delphi 3 23.02.2011 19:55