简体   繁体   中英

Calling a function from another javascript file inside a javascript file

I am trying to basically call a function from another javascript file (inside a javascript file) but it doesn't seem to work.

In my main.html i have declared both files like so:

<script type="text/javascript" src="Jquery/jquery-1.4.4.js"> </script>
<script type="text/javascript" src="src/Reply.js"> </script>
<script type="text/javascript" src="src/Comment.js"> </script>

and inside Comment.js I call the function Reply() that is inside Reply.js..

Comment.js:

function Comment(message){
    var self = this;
    var message = message;
    //
    var comment = document.createElement("li");
    comment.id = "comment";
    comment.style = "display: none;";
    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
    var parent = document.getElementById("wall");
    parent.insertBefore(comment,parent.firstChild);
    //effect after insertion
    $("ul#wall li:first").fadeOut();
    $("ul#wall li:first").fadeIn();

    return comment;
}

function newReplyTxtBox(comment){
    var buttons = comment.getElementsByTagName("input");
    buttons.item(0).disabled="disabled";

    var replyBox = document.createElement("div");
    replyBox.id="replyBox";

    var replyTxt = document.createElement("input");
    replyTxt.id="replyTxt";
    replyTxt.type="text";
    replyTxt.value="Write a reply";
    replyTxt.onfocus = function(e){if(this.value==this.defaultValue) this.value='';};
    replyTxt.onblur= function(e){if(this.value=='') this.value=this.defaultValue;};
    replyBox.appendChild(replyTxt);

    createButtons(replyBox);

    comment.appendChild(replyBox);  
}

function newReply(replyBox){
    var message = $("input#replyTxt").val();
    var reply = new Reply(message);
    replyBox.parentNode.remove(replyBox);
    var replyField = replyBox.parentNode.getElementsByTagName("ul").item(0);
    replyField.appendChild(reply);
}

the newReply() is simply called once you click on the "reply button" which is create like so:

var submitBtn = button.cloneNode();
        submitBtn.value = "submit";
        submitBtn.addEventListener("click", function(){newReply(parent)},false);
        parent.appendChild(submitBtn);

Reply.js:

function Reply(replyMsg){
    var self = this;

    var reply = document.createElement("li");
    reply.id="reply"
    reply.textContent = replyMsg;

    var deleteBtn = document.createElement("input");
    deleteBtn.value = "delete";
    deleteBtn.addEventListener("click", function(){deleteReply(reply)},false);

    reply.appendChild(deleteBtn);

    return reply;
}
function deleteReply(reply){
    reply.parentNode.removeChild(reply);
}

in the newReply function, try changing replyBox.parentNode.remove(replyBox);

to replyBox.parentNode.removeChild(replyBox);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM