尝试将表单值传递到全局 var 以在两个函数中使用但得到此错误document.PostReply is undefined
或javascript只是崩溃,因为函数中未定义getReplyId。无论我尝试过什么,我都会得到一个或另一个错误
任何人都可以看到为什么表单值“ReplyID”没有被传递到 var 。
在任何函数之前,var都放在脚本的开头。
形式
<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; `
如果我这样做var getReplyId = 1
,脚本效果很好,但我需要ReplyID值。
好的,大部分内容都是
<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>
答案 0 :(得分:0)
要使变量成为全局变量,只需忽略var
。
getReplyId = document.getElementById("ReplyID").value;
请注意,全局变量通常是次优实践。如果可能,考虑让一个函数调用另一个函数并将该变量作为参数传递。
答案 1 :(得分:0)
嗯,我不知道为什么会这样,但我把getReplyId = document.getElementById("ReplyID").value;
放在PostNewReply函数中,它仍然作为一个全局变量。从我知道的一切都不应该起作用,但确实如此。
答案 2 :(得分:0)
在新函数调用“SubmitReply”中包含所有JS,并使用INPUT“提交”按钮中的onclick“SubmitReply”将ID传递给它。然后将ID(ReplyID)传递给var getReplyId = (Id)
。这使得getReplyId能够被上面显示的所有JS使用。现在,JS,cfajaxproxy和CFC可以使用ID使表单动态化,并具有自己的ID。