Javascript 将表单值传递到全局变量

Javascript 将表单值传递到全局变量,javascript,coldfusion,coldfusion-8,Javascript,Coldfusion,Coldfusion 8,试图将表单值传递到全局变量以在两个函数中使用,但获取此错误文档。PostReply未定义,或者javascript因函数中未定义getReplyId而崩溃。无论我尝试了什么,我都会犯一个或另一个错误 有人知道为什么表单值ReplyID没有被传递到var中吗。 变量放在脚本开头的任何函数之前 形式 如果我只做这个var getReplyId=1,脚本工作得很好,但我需要ReplyID值 好的,大部分都在这里 要使变量成为全局变量,只需去掉var 但请注意,全局变量通常是次优实践。如果可能的话,考虑

试图将表单值传递到全局变量以在两个函数中使用,但获取此错误文档。PostReply未定义,或者javascript因函数中未定义getReplyId而崩溃。无论我尝试了什么,我都会犯一个或另一个错误

有人知道为什么表单值ReplyID没有被传递到var中吗。 变量放在脚本开头的任何函数之前

形式

如果我只做这个var getReplyId=1,脚本工作得很好,但我需要ReplyID值

好的,大部分都在这里


要使变量成为全局变量,只需去掉var


但请注意,全局变量通常是次优实践。如果可能的话,考虑有一个函数调用另一个函数,并将变量作为参数传递。p> 我不知道为什么会这样,但我把getReplyId=document.getElementByIdReplyID.value;在PostNewReply函数中,它仍然作为一个全局变量工作。据我所知,这不应该工作,但它确实工作。

将所有JS包装在一个新函数调用SubmitReply中,并通过输入提交按钮中的onclick SubmitReply将ID传递给它。然后将ID ReplyID传递给变量getReplyId=ID。这使得getReplyId可供上面显示的所有JS使用。现在JS、cfajaxproxy和CFC可以使用ID使表单具有自己的ID动态。

仍然获取错误文档。getElementByIdReplyID在getReplyId=document.getElementByIdReplyID.value中为null@Kelly你能显示完成的HTML而不是CF源代码吗?听起来它好像是在文档创建完成之前运行的。您需要让脚本在加载时运行,或者使用jQuery的$document.ready函数或其他类似函数frameworks@Kelly把密码放进去。如果有一个ID为ReplyID的元素,它将工作。
<CFFORM NAME="PostReply" ID="PostReply" METHOD="POST">   
<CFINPUT TYPE="hidden" NAME="ReplyID" ID="ReplyID" VALUE="#ReplyID#">  
</CFFORM>
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; `
<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>
getReplyId = document.getElementById("ReplyID").value;