Прототип JS: Document.observe пожари undefined не е функционална грешка

Опитвам се да използвам метода Event.observe, който се предоставя от Prototype JS. За да съм сигурен, че DOM е зареден, използвам document.observe. Това причинява грешката Uncaught TypeError: undefined не е функция. Прототипът на 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="/bg#" 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