2016-04-22 3 views
2

У меня есть javascript: букмарклет с кодом! Переменная не работает в JavaScript

javascript:document.body.contentEditable = !document.body.contentEditable; 

, который должен включать и выключать в «редакторе» на странице (только для шалостей на друзей и такие). Но он не достигает желаемого результата, ничего не происходит, когда я нажимаю закладку. Открытие в Консоль JavaScript, я вижу, что:

document.body.contentEditable 
    "false" 
!document.body.contentEditable 
    false 

Раньше я использовал javascript:document.body.contentEditable = true; и это делает страницу для редактирования, но я не могу его выключить.

+0

http://stackoverflow.com/questions/263965/how-can-i-convert -a-string-to-boolean-in-javascript –

+0

введите это в консоли, когда оно включено: 'typeof document.body.contentEditable' – GottZ

ответ

0

deceze правильно здесь, я (немного глупо) считал, что, поскольку вы document.body.contentEditable = true;
вы также можете сделать
!document.body.contentEditable; , но это не правильно.

В конце концов, я решил использовать свойство, которое на самом деле является булево, isContentEditable, например, так:
document.body.contentEditable = !document.body.isContentEditable;

0

Значение contentEditable - это строка, а не логическая. Он может иметь значения "true", "false" или "inherit" (поэтому он не может быть простым булевым). Логическая инверсия не будет работать. Вам нужно явно назначить одну из этих трех строк.

9

Как вы, вероятно, заметили в Консоли JavaScript, document.body.contentEditable - это строка, а не булевская. Вы можете сделать это вместо того, чтобы:

document.body.contentEditable = !(document.body.contentEditable == "true"); 

или просто

document.body.contentEditable = document.body.contentEditable != "true"; 

HTMLElement.contentEditable свойство используется, чтобы указать, является ли или не редактируется элемент. Этот перечислимый атрибут может иметь следующие значения:

  • «true» указывает, что элемент является приемлемым.
  • "false" указывает, что элемент не может быть отредактирован.
  • «inherit» указывает, что элемент наследует редактируемый статус своего родителя.

https://developer.mozilla.org/en/docs/Web/API/HTMLElement/contentEditable

1

document.body.contentEditable является строкой и JavaScript считает непустые строки быть truthy.

!"" == true 
!"a" == false 
0

Является ли contentEditable текстовым вводом? Так что вам нужно разобрать Texto в логическое значение:

javascript:document.body.contentEditable = !JSON.parse(document.body.contentEditable); 
Смежные вопросы