Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> document.getElementById("id").style.<propName>, не дает прочесть свойство 
V
    Опции темы
Royan
  Дата 7.8.2007, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: 1
Всего: 15



Итак имеем код, который пока работает так
Код

<HTML>
  <HEAD>
    <TITLE>Название</TITLE>
    <LINK href="css/my.css" media="screen" rel="StyleSheet" type="text/css"/>
  </HEAD>
  <BODY>
    <DIV id="mydiv">
        <span id="myspan"></span>
    </DIV>
    <script type="text/javascript">
            alert(document.getElementById("defaultActive").style.marginLeft)
    </SCRIPT>  
  </BODY>
</HTML>

и соответственно CSS

Код

#mydiv #myspan{
    MARGIN-LEFT:10px;
}


Почему я вместо честно выставленных 10px в вылетающем alert'е вижу пустоту? Как мне прочесть, установленное значение MARGIN-LEFT?


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
dXdYdZ
Дата 7.8.2007, 01:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 16.4.2007

Репутация: 3
Всего: 4



Во - первых получить значение отступов таким образом не получится. Дело в том, что в объекте style элемента DOM содержатся значения только тех свойств, которые:
а) Вы установили с помощью JavaScript (node.style.marginLeft="1px"; alert(node.style.marginLeft);)
б)  Изначально содержатся в аттрибуте style элемента Например:
Код

<html>
<body>
<button onclick="fc()" id="1" style="margin-left: 1px;"/>Искать</button>
</body>
<script>
var post;
fc=function()
{
alert(document.getElementById("1").style.marginLeft);
}
</script>
</html>


Во-вторых работать с узлами документа лучше не прямо из тега script, а только после полной загрузки страницы (<body onload="Вызов Вашей функции">...</body>). Иначе в некоторых браузерах ошибку может вызвать даже document.getElementById, так как DOM может быть ещё не построена.

А получить значение свойства CSS можно с помощью следующей функции:

Код

JSON.getStyle=function(node,property)
{
if(!node || !node.style) return false;
if((node.style[property])&&(node.style[property]!="")) return node.style[property];
var selector=property.replace(/([A-Z])/g, "-$1" ).toLowerCase();
alert(selector);
if (document.defaultView)
if(document.defaultView.getComputedStyle)
    {
    var cs = document.defaultView.getComputedStyle(node, "");
    return cs.getPropertyValue(selector); 
    }
if(node.style.getPropertyValue){ return node.style.getPropertyValue(selector);} 

if(node.currentStyle)
    { return node.currentStyle[property]; }
if(node.style.getPropertyValue){return node.style.getPropertyValue(selector);}
return false;
}


Эта функция, кстати, встроена в мою библиотеку.

Это сообщение отредактировал(а) dXdYdZ - 7.8.2007, 01:50
PM MAIL   Вверх
smartov
Дата 7.8.2007, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



dXdYdZ  smile 
PM MAIL   Вверх
Royan
Дата 7.8.2007, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: 1
Всего: 15



dXdYdZ, Спасибо все отлично работает!


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
smartov
Дата 9.8.2007, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



Цитата(dXdYdZ @  7.8.2007,  00:49 Найти цитируемый пост)
JSON.getStyle=function(node,property)

Сначала не заметил, а вот теперь возник вопрос: библиотека JSON, наколько я знаю, давно написана. Что ты имеешь в виду говоря, что
Цитата(dXdYdZ @  7.8.2007,  00:49 Найти цитируемый пост)
Эта функция, кстати, встроена в мою библиотеку.

закопипастена тобишь? 

Это сообщение отредактировал(а) smartov - 9.8.2007, 12:48
PM MAIL   Вверх
dXdYdZ
Дата 9.8.2007, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 16.4.2007

Репутация: 3
Всего: 4



Свою библиотеку я пока для себя назвал JSON. А то, что такая библиотека уже есть, я не знал. Название - это не главное. Поменяем. А функция из моей библиотеки (в данном случае я переделал функцию из Dojo toolkit).

Добавлено через 3 минуты и 57 секунд
И не закопипастена она. Это переделанная функция из Dojo Toolkit. Из неё убрано всё лишнее, она стала меньше по размеру, проще и понятнее. Хотя большинство функций и все (пока 15) компонент написаны мной с нуля. А про библиотеку JSON я не слышал. Если не верите - поищите там точно такую же функцию. Я не думаю, что совпадение на все 100% вероятно smile .
PM MAIL   Вверх
smartov
Дата 9.8.2007, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



dXdYdZ, ну тогда просто обращаю внимание, что библиотека JSON уже есть и довольно известна,  поэтому наверное лучше название изменить, иначе может возникнуть недопонимание.

Это сообщение отредактировал(а) smartov - 9.8.2007, 13:37
PM MAIL   Вверх
dXdYdZ
Дата 9.8.2007, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 16.4.2007

Репутация: 3
Всего: 4



Да. Спасибо за информацию. Значит, до окончание бета-версии остолось доделать дизайн сайта с описанием и придумать новое название.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0610 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.