Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   Новые правила для width (https://javascript.ru/forum/xhtml-html-css/8892-novye-pravila-dlya-width.html)

mycoding 19.04.2010 16:51

Новые правила для width
 
Уже какой раз замечаю в новых браузерах. Не выходит такое
<script>
function divWidth()
{
alert(testDiv.width);
}
</script>
<button onclick="divWidth()">Нажать</button>
<div id='testDiv' width='20px'>

</div>


Хотя раньше это работало.

В тоже время
<script>
function divWidth()
{
alert(testDiv.style.width);
}
</script>
<button onclick="divWidth()">Нажать</button>
<div id='testDiv' style="width:20;">

</div>


У меня в браузере в первом случае выводит undefined,
во втором 20px

B@rmaley.e><e 19.04.2010 16:56

<script>
function divWidth()
{
alert(testDiv.clientWidth + '\n' + testDiv.getAttribute('width'));
}
</script>
<button onclick="divWidth()">Нажать</button>
<div id='testDiv' width='20px'>

</div>
Не надо путать атрибуты и свойства.

Kolyaj 19.04.2010 16:57

Нет свойства width, есть offsetWidth.

mycoding 19.04.2010 16:58

Вот это да, а разве clientWidth должен работать в этом случае?

И дело ж ведь в том что надо вывести именно то значение которое указано в width т.е. в данном случае 20. А у меня в вашем случае выводит 870

mycoding 19.04.2010 17:01

свойство width есть я его активно использую в canvas он там что интересно только в таком варианте и работает
<canvas height=200 width=200 ></canvas>

А если ему задать через стиль то нарисованное изображение будет удлиняться то ли по ширине то ли по высоте на 1.5 раза.

B@rmaley.e><e 19.04.2010 17:13

Цитата:

Сообщение от mycoding
свойство width есть я его активно использую в canvas

А ничего, что div и canvas это разные теги?

Kolyaj 19.04.2010 17:14

У div, как видите, нет.

mycoding 19.04.2010 17:14

А что такого это свойство должно быть у всех, тем более я раньше так делал для всех вроде.

B@rmaley.e><e 19.04.2010 17:15

Цитата:

Сообщение от mycoding
это свойство должно быть у всех

C какой это радости?

У всех элементов должны быть только несколько свойств: id, className, style, title. Остальные зависят от тега.

Octane 19.04.2010 17:17

Не путай свойства и атрибуты.
testDiv.width // свойство объекта - любое значение
testDiv.getAttribute("width") // атрибут DOM-элемента - всегда строка

В HTML не все элементы имеют атрибут width (это не значит, что его нельзя задать самостоятельно), а для таких элементов, как Canvas браузер синхронизирует значения свойства и атрибута. В IE модель упрощена.
http://xpoint.ru/know-how/JavaScript/Atributyi

Ну и есть еще способ достать значение атрибута:
testDiv.attributes.width.value


Часовой пояс GMT +3, время: 04:50.