Булевы HTML-атрибуты

Ваш тип определяется следующим образом:

  • Все свойства должны быть строкой или неким внутренним типом (InnerObj)
  • Свойства InnerObj должны быть строкой или логическое

Вот как это определить:

type InnerObj = {
  [key: string]: string | boolean;
  btnWrap: boolean;
};

type Obj = {
  [key: string]: string | InnerObj;
}

const myObj1: Obj = { key1: 'val1', key2: 'val2', key3: 'val3' };
const myObj2: Obj = { key1: 'val1', key2: { key2: 'val2', btnWrap: true }, key3: 'val3' };
16
задан levik 1 April 2009 в 17:05
поделиться

5 ответов

(Из-за некоторого кода платформы я использую, не звонить setAttribute () или вызов removeAttribute () являются трудными.)

Затем я утверждал бы, что платформа кодирует фиксацию потребностей или дамп.

Вы не можете setAttribute для сбрасывания атрибута дизайном. Любое решение Вы нашли включающие внеполосные значения как 'пустой указатель', если бы это, оказалось, работало в каком-либо конкретном браузере, было бы довольно недопустимо согласно Базовому стандарту DOM.

setAttribute () в любом случае лучше всего избегают в браузере контексты HTML (не XML). IE пред8 не знает различия между атрибутом DOM и свойством JavaScript, которое может легко привести ко многим действительно странным проблемам. При попытке установить 'проверенный' как атрибут (который теоретически необходимо сделать путем установки его на "проверенную" строку), не ожидайте, что IE будет сотрудничать.

Полный список булевых атрибутов в HTML 4.01 (и следовательно XHTML 1.0) (с именами свойства, где они отличаются в случае, если):

checked             (input type=checkbox/radio)
selected            (option)
disabled            (input, textarea, button, select, option, optgroup)
readonly            (input type=text/password, textarea)
multiple            (select,input)
ismap     isMap     (img, input type=image)

defer               (script)
declare             (object; never used)
noresize  noResize  (frame)
nowrap    noWrap    (td, th; deprecated)
noshade   noShade   (hr; deprecated)
compact             (ul, ol, dl, menu, dir; deprecated)
24
ответ дан 30 November 2019 в 17:39
поделиться

Попробуйте removeAttribute:

option.removeAttribute("selected");

Править: После чтения Вашего комментария считайте это о setAttribute. Особенно:

Даже при том, что getAttribute () возвращает пустой указатель для пропавших без вести атрибутов, необходимо использовать removeAttribute () вместо elt.setAttribute (attr, пустой указатель) для удаления атрибута.

3
ответ дан 30 November 2019 в 17:39
поделиться

на ячейках таблицы, например, TD, TH

nowrap

для записи, для изменения атрибутов любят проверенный (на элементах флажка/радио), можно сделать.

myCheckBoxElem.checked = true|false;

или

myCheckBoxElem.checked = !myCheckBoxElem.checked;//toggles to the opposite state
2
ответ дан 30 November 2019 в 17:39
поделиться

Не можете Вы просто использовать removeAttribute()?

1
ответ дан 30 November 2019 в 17:39
поделиться

Не точно, что Вы спрашиваете о, но и 'класс' и 'для' атрибутов получает различные имена DOM

element.className
element.htmlFor
1
ответ дан 30 November 2019 в 17:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: