Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Можно ли создать свой html-атрибут?


Автор: Win MK 32 25.5.2009, 23:12
Типа вот так:
Код

<input type="button" id="b" value="Вкл" mynextvalue="Выкл" / >

Код

document.getElementById('b').onclick = function() {
     var temp;
     temp = document.getElementById('b').value;
     document.getElementById('b').value = document.getElementById('b').mynextvalue;
     document.getElementById('b').mynextvalue = temp;
}


То есть мысль такая, что хранить новое значение хотелось бы непременно в HTML, а не в функции JS. То есть там может быть и не Вкл\Выкл, а что-то более сложное.

Автор: Aliance 25.5.2009, 23:26
http://wdh.suncloud.ru/dhtml04.htm  smile 

Код

(function( elem )
{
    elem.onclick = function()
    {
        var temp = elem.value;
        elem.value = elem.getAttribute( 'mynextvalue' );
        elem.setAttribute( 'mynextvalue', temp );
    }
})( document.getElementById('b') );

Автор: SelenIT 26.5.2009, 00:46
До кучи, авось пригодится: всегда актуальное;) http://xpoint.ru/know-how/JavaScript/Atributyi?8 и относительно свеженькое http://designformasters.info/posts/custom-data-attributes/

Автор: Win MK 32 26.5.2009, 01:21
Что-то все сложнова-то как-то. Неужели нельзя проще???

Есть же elem.value, elem.id - почему же нельзя elem.mynewvalue? Нельзя?
<input type="button" id="b" value="Вкл" mynextvalue="Выкл" / > И так нельзя?

Автор: Aliance 26.5.2009, 08:32
Win MK 32, потому что есть стандартные аттрибуты, на которые есть нечто вроде alias`ов (value, id, name), а доступ к остальным должен осуществляться именно так. Конечно, некоторые браузеры (вроде IE) позволяет делать так, как описал ты, но парни из W3C этого не поддерживают.

Автор: Samotnik 29.5.2009, 17:06
Цитата(Win MK 32 @  26.5.2009,  01:21 Найти цитируемый пост)
Что-то все сложнова-то как-то. Неужели нельзя проще???

используй фреймворки, там одной строчкой можно элементы создавать

Автор: youri 30.5.2009, 01:21
Aliance, ТС, конечно, написал, что хранить значение нужно в атрибуте, но ему же и свойство подойдет, скорее всего

кроме того, не обязательно ведь каждый обработчик в вызов функции запихивать? Имхо громоздко как-то. Можно было запихнуть элемент в переменную, а потом уже назначать обработчик

p.s. внутри обработчика вообще this можно использовать

Автор: Aliance 30.5.2009, 13:40
youri, кто как привык. По мне - так лучше!
А поводу хранения данных в аттрибутах, так я вообще против этого. Я лишь склонен в сторону custom-data-attributes (о них можно почитать по второй ссылке SelenIT), но они только-только появились и пока что не вошли в стандарт, которым пользуюсь я (XHTML Strict)

Автор: SelenIT 30.5.2009, 21:00
Цитата(Aliance @  30.5.2009,  13:40 Найти цитируемый пост)
и пока что не вошли в стандарт, которым пользуюсь я (XHTML Strict)

Имхо, XHTML 1.x уже меняться не будет (вот делали-делали два года second edition XHTML1.1, да видно передумали, вернулись к версии 2001 года). Но (X)HTML5, на мой взгляд, по-любому перспективнее, т.к. именно на него делают ставку производители браузеров (а сам стандарт, в свою очередь, ориентируется на уже работающие в браузерах фичи, типа autocomplete, disabled для fieldset-а и т.п.). В отличие от XHTML1.x, родной медиа-тип которого принципиально не поддерживают все версии IE...

Автор: Aliance 1.6.2009, 17:14
SelenIT, так и думал, что поправишь ;)
Нет, безусловно я имел ввиду то, что такие нестандартные аттрибуты не вошли в стандарт, которым я пользуюсь (на текущий момент это XHTML), но как только я стану пользоваться стандартом HTML5 - то значит "аттрибуты в него войдут". Не имею ввиду то, что я ожидаю, что они войдут когда-нибудь в XHTML smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)