首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未捕获ReferenceError:未定义doit

未捕获ReferenceError:未定义doit
EN

Stack Overflow用户
提问于 2011-04-19 01:37:04
回答 2查看 3.5K关注 0票数 0

我正在写一个小的用户脚本,在我经常使用的phpBB论坛的用户个人资料图像旁边包含一个链接。单击该链接时,我收到如下错误:

代码语言:javascript
复制
Uncaught ReferenceError: doit is not defined
(anonymous function)            viewtopic.php:542
onclick                         viewtopic.php:543

用户脚本的一部分:

代码语言:javascript
复制
(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;

    }

}




})();

有人能指出我哪里做错了吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-19 01:42:01

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

代码语言:javascript
复制
var link = document.createElement('a');
link.setAttribute('href', '#');
link.innerHTML = 'New text';

并向其添加事件:

link.onclick = doit

最后,将其添加到页面,就像您正在做的那样:

pd[i].appendChild(ele);

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

编辑:

我在示例中添加了innerHTML。我只会使用一个框架,而不是用很难的方式来做这件事。

票数 4
EN

Stack Overflow用户

发布于 2011-04-19 01:40:35

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5706647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档