Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
各种自定义变量名(如CreateComent)在内联javascript中被覆盖,但在外部js中不被覆盖。为什么?_Javascript_Variables_Scope - Fatal编程技术网

各种自定义变量名(如CreateComent)在内联javascript中被覆盖,但在外部js中不被覆盖。为什么?

各种自定义变量名(如CreateComent)在内联javascript中被覆盖,但在外部js中不被覆盖。为什么?,javascript,variables,scope,Javascript,Variables,Scope,我有这样的代码 <div id="loadCommentBestComment" style="cursor:pointer" onclick="createComment('af0532_$dvkpo6420')">load the most useful comment.</div> 加载最有用的注释。 问题是我在单击它时,没有执行任何操作,甚至没有调用函数createComment()。几个小时试图弄清楚发生了什么,但什么也没有。然后尝试将createComme

我有这样的代码

<div id="loadCommentBestComment" style="cursor:pointer" onclick="createComment('af0532_$dvkpo6420')">load the most useful comment.</div>
加载最有用的注释。

问题是我在单击它时,没有执行任何操作,甚至没有调用函数createComment()。
几个小时试图弄清楚发生了什么,但什么也没有。然后尝试将createComment的名称更改为另一个名称,如createCommentAlias(),一切正常。
这不是第一次发生这种情况,我以前也遇到过这种奇怪的行为。另一个例子是,名称nextSibling是Dom元素的一种方法,因此通常可以用作var nextSibling,但在内联js中,它再次被其他内容覆盖。同样,只有在js是内联的情况下才会发生这种情况。
所以我想知道这些变量是什么,它们来自哪里,并且可能有一个它们的列表,这样我就不会再使用这些名称。

问题是,既然您使用了,那么您的全局函数

window.createComment
…被…笼罩着

Document.prototype.createComment
此行为的解释如下所示:

词汇环境范围

  • 如果H是一个元素的,那么让作用域成为NewObjectEnvironment(文档,全局环境)的结果

    否则,H是对象的:let 范围是全球环境

  • 如果表单所有者不为null,则让作用域成为NewObjectEnvironment的结果(表单所有者,作用域)

  • 如果元素不为null,则将范围设为NewObjectEnvironment(元素,范围)的结果

  • 注意:NewObjectEnvironment()是在ECMAScript edition 5部分中定义的

    这意味着全局范围被

  • 文件
  • 表格所有者(如有)
  • 元素
  • 因此,你可以

    • 重命名你的函数

      函数createComment{ var div=document.getElementById('loadComment'); div.style.left=“200px”; div.style.color=“红色”; }
      #加载注释{
      位置:绝对位置;
      }

      lool

      相关:。