为什么我的功能没有触发onclick?

时间:2016-08-12 13:52:10

标签: javascript html onclick

我试图通过单击按钮(我已经使用Firebug在网站上包含此代码)在HTML网站上调用JavaScript函数,当我在Notepad ++或任何其他编辑器上运行以下代码时,它可以工作,但是当我将此代码复制到一个网站并单击按钮,它给了我:

  

错误:: change_value()未定义

我的代码是这样的:

JavaScript :(我已将其复制到网页的标题部分)

<script type="text/javascript">
function change_value() {
    alert("Test");
} 
</script>

HTML :(我已将其复制到正文部分)

<button onclick="change_value()">Click Here !</button >

我已尝试过只在body部分编写的所有代码同样的错误。

1 个答案:

答案 0 :(得分:1)

在已经显示的页面的源代码中添加JS脚本(实际上使用firebug或任何调试器)将不会执行任何操作,因为此标记(<script>)由浏览器在加载时计算页面。

相反,使用开发工具(控制台)来定义您的功能;它现在应该正常工作。

编辑:

在Chrome中测试过。手动添加Stack Overflow页面顶部的按钮后:

<button onclick="toast()">HELLO</button>

我测试了两件事:

script标记直接添加到源代码中:

<script>function toast(){alert("Hello");}</script>

点击按钮不起作用。

现在,使用开发者控制台并定义相同的功能,单击该按钮可正确显示警报。

编辑2:使用开发者控制台来确定我的意思:通常在Firebug中,您应该看到“控制台”面板。如果你想“在运行中”定义一个js函数(当你的页面已经加载时),只需在控制台中输入它的定义;在这种情况下:

function toast(){alert("Hello");}

它在所有浏览器上的工作原理完全相同。

正如Ahmad Bamieh在评论中建议的那样,您还可以从外部JS脚本中添加<script>标记,例如:

function addScript( src,callback) { 
    var s = document.createElement( 'script' );
    s.setAttribute( 'src', src );
    s.onload=callback; 
    document.body.appendChild( s );
}