1

我有一个示例代码:

<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 defined演示在这里,如何适合它?

4

2 回答 2

5

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

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

(类似于onDomReady选项)

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

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

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

正如 mplungjan 指出的那样,我不知何故根本没有意识到,当使用onclick锚元素时,您可能希望阻止链接的默认行为(即使它只是转到“#”),并且可以通过多种方式实现,但其中一种是:

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

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

于 2012-11-27T06:54:01.167 回答
0

这里是http://jsfiddle.net/TmLut/4/

我改为onloadhead左侧选择框

于 2012-11-27T06:57:42.843 回答