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