未捕获的ReferenceError:未定义doit

时间:2011-04-18 17:37:04

标签: javascript function

我正在编写一个小用户脚本,在我经常访问的phpBB论坛中包含用户个人资料图片旁边的链接。点击链接后,我收到如下错误:

Uncaught ReferenceError: doit is not defined
(anonymous function)            viewtopic.php:542
onclick                         viewtopic.php:543

用户部分:

(function(){

    var script = document.createElement('script');
    script.textContent = '(' + twk.toString() + ')();';
    document.body.appendChild(script);

    function twk() {

        pd = document.getElementsByClassName('postdetails');

        for (i=0 ; i<(pd.length); i++) {
            ele = document.createElement("a");
            ele.innerHTML ='<a href=\'#\' onclick=\'doit();\'>Quick reply</a>';

            pd[i].appendChild(ele);

        }

   function  doit() {
        selec = document.getSelection().anchorNode.textContent;
        document.getElementsByClassName("row2").item('message').innerHTML = selec;

    }

}




})();

任何人都可以指出哪里/我做错了什么?

2 个答案:

答案 0 :(得分:4)

首先,你创造的元素都错了。它应该是这样的:

var link = document.createElement('a');
link.setAttribute('href', '#');
link.innerHTML = 'New text';

并向其添加一个事件:

link.onclick = doit

最后,像你正在做的那样将它添加到页面中:

pd[i].appendChild(ele);

你可能想考虑使用像jQuery或Mootools这样的框架,它会让你的生活更轻松。有时与浏览器做这样的事情存在冲突。我个人喜欢Mootools,但jQuery更容易上手,特别是对于小型项目。

编辑:

我在示例中添加了innerHTML。我会使用一个框架,而不是通过这种方式做到这一点。

答案 1 :(得分:3)

从外部的anon函数中解开所有内容,它应该可以工作: