Прототип JS: Document.observe срабатывает undefined, это не ошибка функции

Я пытаюсь использовать метод Event.observe, который предоставляется Prototype JS. Чтобы быть уверенным, что DOM загружен, я использую document.observe. Это вызывает ошибку Uncaught TypeError: undefined is not a function. Прототип JS был загружен, как вы можете видеть ниже:

HTML

<!DOCTYPE html>
<html>
<head>
    <title>playground</title>
    <script language="javascript" type="text/javascript" src="../js/prototype.js"></script>
    <script language="javascript" type="text/javascript" src="../js/functions.js"></script>
</head>

<body>
    <div>
        <a href="#" id="meinLink">Hello World</a>
    </div>
    <input type="button" onclick="changeLinkText()" value="Change link by using Prototype">
</body>

JavaScript

//this works
var changeLinkText = function(){
    $("meinLink").innerHTML="prototypeWorks";
};

//this causes the error
Document.observe("dom:loaded", function() {
    $("meinLink").observe('click', function(e) {
        document.getElementById('meinLink').innerHTML="prototypeDoesntWork";
    });
});

person ck08150077    schedule 27.06.2014    source источник
comment
Почему вы используете Document, а не document? При правильном использовании все работает нормально: jsfiddle.net/RYmyx. Document — интерфейс, document — объект   -  person Ian    schedule 27.06.2014
comment
Это была моя ошибка. Спасибо   -  person ck08150077    schedule 30.06.2014


Ответы (1)


Ваш D в

Document.observe("dom:loaded", function() {

в верхнем регистре, исправляя его правильное обозначение

document.observe("dom:loaded", function() {

вероятно, сделает работу.

Вы также можете попытаться вызвать прослушиватель событий по клику.

$$('meinLink').invoke('on', 'click', '.item', function(event, el) {
    // el is the 'meinLink' element
});

Возможно даже, что достаточно просто использовать on.

$("meinLink").on("click", function(event) {
   document.getElementById('meinLink').innerHTML="prototypeDoesntWork";
});
person Jonast92    schedule 27.06.2014