我正在写一个小的用户脚本,在我经常访问的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;

    }

}




})();


谁能指出我在哪里/做错了什么?

最佳答案

首先,您创建的元素完全错误。应该是这样的:

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


并向其中添加一个事件:

link.onclick = doit

最后,像执行操作一样将其添加到页面中:

pd[i].appendChild(ele);

您可能需要考虑使用jQuery或Mootools之类的框架,这将使您的生活更加轻松。有时与浏览器执行此类操作会发生冲突。我个人喜欢Mootools,但是jQuery更易于使用,尤其是对于小型项目。

编辑:

我在示例中添加了innerHTML。我只是使用框架而不是用困难的方式做。

关于javascript - 未捕获ReferenceError:未定义doit,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5706647/

10-10 21:45