Uncaught ReferenceError: doit не определен - PullRequest
0 голосов
/ 18 апреля 2011

Я пишу небольшой пользовательский скрипт, чтобы добавить ссылку рядом с изображением профиля пользователя для форума 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 ]

4 голосов
/ 18 апреля 2011

Прежде всего, вы неправильно создаете свой элемент. Должно быть так:

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

И добавить к нему событие:

link.onclick = doit

Наконец, добавьте его на страницу, как вы делаете:

pd[i].appendChild(ele);

Возможно, вы захотите использовать такие фреймворки, как jQuery или Mootools, это значительно облегчит вашу жизнь. Иногда возникают конфликты с браузерами, которые делают подобные вещи. Мне лично нравятся Mootools, но jQuery легче подобрать, особенно для небольших проектов.

EDIT:

Я добавил innerHTML к примеру. Я бы просто использовал фреймворк вместо того, чтобы делать это сложным путем.

3 голосов
/ 18 апреля 2011

разверните все из этой внешней функции anon, и она должна работать:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...