!变量在javascript中不起作用
我有一个带有代码的!变量在javascript中不起作用,javascript,Javascript,我有一个带有代码的javascript:bookmarklet javascript:document.body.contentEditable = !document.body.contentEditable; 它应该打开和关闭页面的“编辑器”(仅用于朋友的恶作剧等)。但它并没有达到预期的效果,当我点击书签时什么也没发生。打开Javascript控制台,我看到: document.body.contentEditable "false" !document.body.contentEd
javascript:
bookmarklet
javascript:document.body.contentEditable = !document.body.contentEditable;
它应该打开和关闭页面的“编辑器”(仅用于朋友的恶作剧等)。但它并没有达到预期的效果,当我点击书签时什么也没发生。打开Javascript控制台,我看到:
document.body.contentEditable
"false"
!document.body.contentEditable
false
之前,我使用了
javascript:document.body.contentEditable=true
这使页面可编辑,但我无法将其关闭。contentEditable的值是字符串,而不是布尔值。它可以有值“true”
、“false”
或“inherit”
(因此它不能是简单的布尔值)。一个布尔反转是行不通的。您需要显式分配这三个字符串中的一个。就像您可能在JavaScript控制台中注意到的那样,document.body.contentEditable
是一个字符串,而不是布尔值。您可以这样做:
document.body.contentEditable = !(document.body.contentEditable == "true");
或者只是
document.body.contentEditable = document.body.contentEditable != "true";
HtmleElement.contentEditable属性用于指示
或者该元素不可编辑。此枚举属性可以具有
以下数值:
- “true”表示元素是可编辑的
- “false”表示无法编辑该元素
- “继承”表示元素继承其父元素的可编辑状态
document.body.contentEditable
是一个字符串值,JavaScript认为非空字符串是真实的
!"" == true
!"a" == false
contentEditable是文本输入吗?因此,您需要将texto解析为布尔值:
javascript:document.body.contentEditable = !JSON.parse(document.body.contentEditable);
deceze在这里是正确的,我(有点愚蠢)认为,因为你这样做
document.body.contentEditable=true代码>
您也可以这样做
!document.body.content可编辑代码>
但这是不对的
最后,我决定使用实际上是布尔值的属性,如下所示:
document.body.contentEditable=!document.body.isContentEditable代码>在控制台中键入此选项(如果启用):typeof document.body.contentEditable