2016-04-22 58 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」表示該元素不能被編輯。
  • 「繼承」表示該元素繼承其父代的可編輯狀態。

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);