javascript - javascript 中未定义错误函数

标签 javascript

我有一个示例代码:

<input width="50" type="text" value="" name="application_id" id="text_input">
<a href="#" onclick="addSelect('1', 'Test Name');" title="Click to add this item">Test Name</a>

和javascript

function addSelect(id, title) {
    document.getElementById('text_input').value = title;
}

当我运行代码时,结果错误是 addSelect is not defineddemo here , 怎么装呢?

最佳答案

您的脚本已被定义为运行 onLoad,这意味着您的函数无法像您预期的那样在全局范围内使用。它将在某些 onLoad 方法(无论 jsFiddle 使用哪个)的局部范围内定义。使用此设置,我认为 jsFiddle 将您的代码放入此或类似的内容中:

window.onload = function () {
    // Your code
};

(类似于onDomReady 选项)

这样您就不必担心绑定(bind)正确的事件,您只需测试您的脚本(确保页面已加载)。

当您尝试调用您希望在全局范围内的函数时,它不会起作用。只需将左侧的设置更改为 no wrap (head)(或 no wrap (body))

http://jsfiddle.net/TmLut/3/

正如 mplungjan 所指出的,而我不知何故根本没有意识到,当使用 anchor 元素的 onclick 时,您可能想要阻止链接的默认行为(甚至如果只是转到"#"),可以通过多种方式实现,但其中一种是:

<a href="#" onclick="runFunction();return false;">Text</a>

尽管与此同时,有人可能会争辩说您根本不应该使用内联处理程序,而是希望将事件与 Javascript 完全绑定(bind)。根据这种情况,您仍然可以选择阻止默认行为。在任何情况下,您仍然可以捕获 event 对象(按浏览器规范化......顺便说一下,jQuery 会这样做)并调用 event.preventDefault();在方法中。

关于javascript - javascript 中未定义错误函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13578845/

相关文章:

javascript - highlight.js 不会自动检测语言

javascript - javascript中的经典继承实现

javascript - 让 Node.js 与 tree-model-js 一起工作

javascript - 动态地将页面内容上的 (http) 切换为安全协议(protocol) (javascript)

javascript - 将 JavaScript 函数作为 onclick 属性中的参数传递

javascript - 分支的 HTML 图表

javascript - 我想稍微调整我的 PACE 自动页面加载进度条

javascript - 修改隐藏输入中的json数组?

javascript - 为什么这个 MDN 示例在 `undefined` 中使用 `.bind(undefined, 37)` ?

javascript - typescript 可选字段与可以未定义的字段