javascript - 为什么我的函数没有触发 onclick?

标签 javascript html onclick

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

error:: change_value() is not defined

我的代码是这样的:

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

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

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

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

我尝试过仅在正文部分编写的所有代码都出现相同的错误。

最佳答案

在已显示页面的源代码中添加 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 在评论中建议的那样,您还可以添加 <script>来自外部 JS 脚本的标记,例如:

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

关于javascript - 为什么我的函数没有触发 onclick?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38919703/

相关文章:

javascript - 管理类的元素

html - 为什么我看不到此表行中列的边框?

javascript - 使用 onclick 属性返回 false

javascript - 如何在 angular 2 *ngFor 循环中使点击事件可选

javascript - PHP 与 onclick 函数

javascript - 将字符串转换为 shell 参数

javascript - 我想知道这个函数到底做了什么 .split (' ' ).map(x => +x);

javascript - CSS3 或 jQuery/JavaScript 动画,哪个更兼容?

javascript - 移动端单列布局,桌面端双列布局

html - 创建不重新排列的对象行