Javascript 因为我可以';在div中不使用脚本?

Javascript 因为我可以';在div中不使用脚本?,javascript,html,script-tag,Javascript,Html,Script Tag,我正在制作一个带有程序编辑器的网站,供用户制作HTML程序。 我通常通过输入alert(“Hi!”)来测试这一点进入正文输入区域,但没有警报。正如您从代码中看到的,结果是脚本在div中结束。 那么scripts在divs中工作吗?如果有,下面是我的代码(至少是最重要的部分): 这是我按下“运行!”按钮时要运行的脚本: 函数onclick(){ document.getElementsByTagName(“head”)[“0”].innerHTML+=eval(document.getEleme

我正在制作一个带有程序编辑器的网站,供用户制作HTML程序。 我通常通过输入
alert(“Hi!”)来测试这一点进入
正文
输入区域,但没有警报。正如您从代码中看到的,结果是脚本在
div
中结束。 那么
script
s在
div
s中工作吗?如果有,下面是我的代码(至少是最重要的部分):

这是我按下“运行!”按钮时要运行的脚本:


函数onclick(){
document.getElementsByTagName(“head”)[“0”].innerHTML+=eval(document.getElementById(“editorHead”).value);
document.getElementById(“结果”).innerHTML=eval(document.getElementById(“editorBody”).value);
}
这是输入区域和运行按钮的代码(省略它们之间的文本和类属性):


我尝试将
onclick
的名称更改为
run
,这使得单击工作正常(在此之前,当您单击按钮时,按钮不会变成蓝色),但就是这样。

问题是脚本在div中工作吗。是标记内容在文档中显示的位置内联执行

但是,它总是在文档上下文中执行。意思是这个===文档。因此,要绑定到div的onclick方法(javascript中处理ui事件的方式),需要找到div:

document.findElementById("my-div-id").onclick = function(e) {
   // do something
};
请注意,如果存在默认的单击行为(如a标记上的单击),则此操作会破坏元素的默认行为

还需要更清楚地了解预期的行为。这样做

<script>
    function doSomething() {
        alert();
    }
</script>
<button onclick="doSomething()">Button</button>

函数doSomething(){
警惕();
}
按钮

试着将
放在
主体下方
不起作用,因为
onclick
是一个窗口函数……您将自己的函数命名为myOnclick,这样您就不会重载window.onclick。将其命名为类似于
dangerousEval()
charlietfl所说的描述性名称。不过,您已经回答了自己的问题,因为您注意到更改名称可以使其工作。我对其进行了清理,并添加了一个示例,说明如何将函数绑定到dom元素上的事件。就我个人而言,通过上面的示例,我更喜欢javascript中的绑定功能,而不是下面的示例。但是,当使用chrome或firebug中的开发工具内省实时html文档时,更容易理解。最后,我建议使用jQuery或dojo等方便的函数,如dojo.hitch,它将一个函数绑定到另一个函数。这样,您就不会破坏现有的行为(比如在表单中发布之前进行一些验证)。
document.findElementById("my-div-id").onclick = function(e) {
   // do something
};
<script>
    function doSomething() {
        alert();
    }
</script>
<button onclick="doSomething()">Button</button>