2010-12-20 54 views
1

我已经在我的javascript中定义了几个函数,这些函数完美地工作,但是当我将它放入原型中时,它似乎不起作用。在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调试工具,在$( “#形式NewMessage作为”)提交完全不来电。所以评论(消息),从未创建(这是我已经设置了原型功能)

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); 
} 
+0

不幸的是,我所能做的只是重新编码,因为我不会说jquery。 '原型'有点误导。 – 2010-12-20 20:18:02

+0

你试过调试吗? – SLaks 2010-12-20 20:22:35

+0

实际上,'原型'是javascript中的一个描述性术语,与软件开发中的其他任何地方有不同的含义(不幸:():请参阅http://javascript.crockford.com/prototypal.html来描述原型'在js中意味着'也许'javascript-prototype'应该是一个标签? – 2010-12-20 20:29:41

回答

0

哪里createButtons定义? (在Comment.js)?

此外,您在题为去年文件Commentmanager.js,但wall.html有CommentManager.js(请注意wall.js首都M)。我假设这是SO问题的一个错误,但要确保服务器上的文件名与html脚本标记匹配。