Использование прототипа в JavaScript - PullRequest
1 голос
/ 20 декабря 2010

Я определил несколько функций внутри моего javascript, которые отлично работают, но когда я помещаю его в прототип, он просто не работает.

wall.html:

<script type="text/javascript" src="Jquery/jquery-1.4.4.js"> </script>
<script type="text/javascript" src="src/CommentManager.js"> </script>
<script type="text/javascript" src="src/Reply.js"> </script>
<script type="text/javascript" src="src/Comment.js"> </script>
<script type="text/javascript">
    $(document).ready(function(){
        CommentManager();
        $("form#newMessage").submit(function(){
            var message = $("input#newMessageTxt").val();
            var newComment = new Comment(message);
        });
    });
</script>
</head>

<body>
    <div class="message">
        <form id="newMessage"&gt;>
            <input type="text" id="newMessageTxt" height="200px" value="Write a message" onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;" />
            <input type="submit" value="Submit" ></button>
        </form>
    </div>
</body>

но странная часть - когда я запускаю инструмент отладки в googlechrome, $ ("form # newMessage"). Submit не вызывает вообще.Таким образом, Комментарий (сообщение) никогда не создается (именно здесь я настроил функции прототипа)

Comment.js:

function Comment(message){
    var self = this;
    var message = message;

    var comment = document.createElement("li");
    comment.id = "comment";
    comment.textContent = message;
    //empty reply field
    var replyField = document.createElement("ul");
    replyField.id = "replyField";
    //create the appropriate buttons
    createButtons(comment);
    //append the replyField
    comment.appendChild(replyField);
    //insert into wall
    addComment(comment);
    //effect after insertion
    Effect(comment);
    $(comment).mouseleave(function() {mouseOut(comment);});
    $(comment).mouseenter(function() {mouseOver(comment);});
    return comment;
}
Comment.prototype={
    deleteComment : function (comment){
        $(comment).fadeOut();
        setTimeout(function() {comment.parentNode.removeChild(comment);},500);
    },
//there are more methods here
}

Commentmanager.js:

function CommentManager(){
    var owner = null; 

    var wall = document.createElement("ul");
    wall.id = "wall";

    document.body.appendChild(wall);
    return wall;
}

function addComment(comment){
    var wall = document.getElementById("wall");
    wall.appendChild(comment);
}

1 Ответ

0 голосов
/ 20 декабря 2010

Где определено createButtons? (в Comment.js)?

Кроме того, вы назвали этот последний файл как Commentmanager.js, но wall.html имеет CommentManager.js (обратите внимание на заглавную букву M в wall.js). Я предполагаю, что это опечатка в вопросе SO, но убедитесь, что ваши имена файлов на сервере соответствуют тегам html-скриптов.

...