Frage

ein Formular Wert zu einer globalen passieren Versuch var Verwendung in zwei Funktionen sein, aber diesen Fehler document.PostReply is undefined oder JavaScript erhalten stürzt, nur weil GetReplylD innerhalb der Funktionen nicht definiert sind. Egal, was ich versucht habe ich den einen oder anderen Fehler auftreten

sehen kann jemand, warum der Formwert „ReplylD“ nicht übergeben wird in den var .
Die var wird am Anfang des Skripts, bevor irgendwelche Funktionen gelegt.

Form

<CFFORM NAME="PostReply" ID="PostReply" METHOD="POST">   
<CFINPUT TYPE="hidden" NAME="ReplyID" ID="ReplyID" VALUE="#ReplyID#">  
</CFFORM>

, was ich habe tryed

1 - var getReplyId = document.PostReply.ReplyID;  
2 - var getReplyId = document.PostReply.ReplyID.value;  
3 - var getReplyId = document.getElementById("ReplyID");  
4 - var getReplyId = document.PostReply.getElementById("ReplyID");    
5 - var getReplyId = document.getElementById("PostReply.ReplyID").value; `

Wenn ich nur diesen var getReplyId = 1 tut das Skript funktioniert gut, aber ich brauche den ReplylD Wert.

Ok hier ist alles für den größten Teil

<CFOUTPUT>  
<STYLE>  
targetPostReply#ReplyID#{visibility : visible}  
targetPostReplyResponse#ReplyID#{visibility : visible}  
</STYLE>  
</CFOUTPUT>

<cfajaxproxy cfc="CFC/PostReply" jsclassname="PostReplyCFC">

<SCRIPT SRC="js/PostReply.js" TYPE="text/javascript">
    var getReplyId = document.getElementById("ReplyID").value;   
    $(document).ready(  
        function () {  
        $("form#PostReply").submit(  
        function PostNewReply(ReplyID, ReplyComment){  
            var cfc = new PostReplyCFC();   
            cfc.setCallbackHandler(getNewReply)  
            cfc.setForm('PostReply')  
            cfc.PostNewReply('ReplyComment');  

            document.getElementById("targetPostReplyResponse"+getReplyId).style.display='block';  
            document.getElementById("targetMakeReply"+getReplyId);  
            $('#targetMakeReply'+getReplyId).slideToggle("slow");  
            $(this).toggleClass("targetMakeReply"+getReplyId);  
            return false;  
        }); // .submit()  
    });  
    function getNewReply(newReply)    
    {    
        $('#replyResponse'+getReplyId).html(newReply);  
        return false;  
    }   
</SCRIPT>


<CFOUTPUT>
    <DIV ID="targetMakeReply#ReplyID#">  
        <CFFORM NAME="PostReply" ID="PostReply" METHOD="POST">  
            <CFINPUT TYPE="hidden" NAME="ReplyID" ID="ReplyID" VALUE="#ReplyID#">  
            <textarea name="ReplyComment" rows="5" cols="95"></textarea>  
            <CFINPUT type="image" name="Submit" id="submitButton" value="Post Reply" src="images/PostReply.gif" onmouseover="src='images/PostReplyO.gif'" onmouseout="src='images/PostReply.gif'">  
        </CFFORM>  
    </DIV>  
</CFOUTPUT>


<CFOUTPUT>  
    <STYLE>##targetPostReplyResponse#ReplyID#{display : none}</STYLE>  
    <DIV ID="targetPostReplyResponse#ReplyID#">  
        <TABLE ALIGN="center" VALIGN="top" WIDTH="750" BGCOLOR="FFFFFF" CELLPADDING="0" CELLSPACING="0">  
            <TR>  
                <TD COLSPAN="2" CLASS="text12B"><IMG SRC="images/blank.gif" WIDTH="1" HEIGHT="5" ALT="" BORDER="0"><BR><SPAN ID="replyResponse#ReplyID#"></SPAN></TD>  
            </TR>  
        </TABLE>  
    </DIV>  
</CFOUTPUT>
War es hilfreich?

Lösung 3

Wrapped alle JS in einem neuen Funktionsaufruf „SubmitReply“ und übergeben Sie die ID, um es mit einem Onclick „SubmitReply“ in der INPUT-Taste Senden. Die ID (ReplylD) wurde dann zu einem var getReplyId = (Id) weitergegeben. Dies machte die GetReplylD Lage nutzen, indem alle JS oben gezeigt. Nun ist die JS, cfajaxproxy und CFC die ID macht die Form dynamisch mit ihren eigenen ID verwenden können.

Andere Tipps

Um eine Variable global machen, sondern nur die var verlassen weg.

getReplyId = document.getElementById("ReplyID").value;

Hinweis aber, dass globale Variablen sind oft suboptimal Praxis. Wenn möglich, sollten eine Funktion, um die andere und übergeben die Variable als einen Parameter aufrufen zu müssen.

Nun, ich weiß nicht, warum das funktioniert, aber ich getReplyId = document.getElementById("ReplyID").value; innerhalb der Funktion PostNewReply setzen und es funktioniert immer noch als globalen var. Von allem, was ich weiß, soll dies nicht arbeiten, aber es funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top