!变量无法在javascript中运行

时间:2016-04-22 15:22:21

标签: javascript

我有一个javascript:书签,代码为

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

应该打开和关闭"编辑器"对于页面(只是为了朋友的恶作剧等)。但它没有实现预期的结果,当我点击书签时没有任何反应。打开Javascript控制台,我看到:

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

之前,我使用了javascript:document.body.contentEditable = true;,这使得页面可以编辑,但我无法将其关闭。

5 个答案:

答案 0 :(得分: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 :(得分:1)

document.body.contentEditable是一个字符串值,JavaScript认为非空字符串是真的。

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

答案 2 :(得分:0)

contentEditable的值是一个字符串,而不是布尔值。它可以包含值"true""false""inherit"(因此它不能是简单的布尔值)。布尔反转不起作用。您需要明确指定这三个字符串中的一个。

答案 3 :(得分:0)

contentEditable是文本输入吗?所以你需要将texto解析为boolean:

javascript:document.body.contentEditable = !JSON.parse(document.body.contentEditable); 

答案 4 :(得分:0)

在这里,deceze是正确的,我(有点愚蠢)认为,因为你这样做 document.body.contentEditable = true;
你也可以做 !document.body.contentEditable; 但这不正确。

最后,我决定使用实际上是布尔值isContentEditable的属性,如下所示:
document.body.contentEditable = !document.body.isContentEditable;