3%$#@# ява-скрипт и конкретно про null
Как-то в последнее время не складывается у меня с JS, вот из последнего:
if(this.dataset.error!=null) { console.log(this.dataset.error); balloon(this); } в лог идет со строки 144 Код:
"null" forms.js:144 Теперь вот как инициализируется в цикле elem.dataset.error=null; typeof дает string. Ну пусть дает, но как тогда вообще проверять на null, или в чем именно тут косяк. Потому что оно в json валится в dataset? |
Ладно, тогда другой вопрос: куда обычно втыкаются такого рода проперти, ну, которые в процессе возникают и надо их вместе с элементом таскать?
|
dataset всегда возвращает строку. Делай не присвоение null, а delete this.dataset.error.
|
dataset - это аттрибут, аттрибут в свою очередь может быть только строкой.
elem.dataset.error=null; - преобразует null к строке. elem.dataset.error содержит строку "null". this.dataset.error != null приводит для сравнения к примитивным типам, где null -> false, а строка "null" -> true. |
Понятно, я тупой. А второй вопрос? Куда обычно складывают эти свои проперти?
То есть я могу законно залепить elem.error=null и не париться с атрибутами? |
Нет, все равно юмора не понял. В js ничего ж вроде не типируется. Получается в dataset встроен какой-то сеттер который приводит все барахло в строку?
|
kostyanet, можешь.
Но обычно складывают отдельно DOM, отдельно данные. DataSet - просто надстройка над атрибутами для удобства. А атрибуты по спеке могут быть только строкой(что очевидно, т.к. атрибут это то, что мы видим в html) |
Нет, если рассуждать программно, то атрибут - такие же данные, а чтобы он стал строкой на выводе стоит метод типа __toString(). Так ведь обычно в программировании делятся данные на данные и отображение данных.
Фиг с ним, с атрибутом. За ответы спасибо. Про дом тоже вспомнил, полгода не занимался - все забыл. То есть я собираю в массив не элементы дома, а свой массив объектов в одном из пропертей которого - элемент дома и всякие другие связанные с этим элементом. Блин, самое смешное что так у меня и сделана клиентская часть datagrid. Вот что значит полгода не видеть кодов. |
А если в домный элемент пихать, кстати, все работает, халява. :)
|
Часовой пояс GMT +3, время: 12:04. |