Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Coldfusion cflayout:getElementById不';如果包含在源文件中,则无法工作_Coldfusion - Fatal编程技术网

Coldfusion cflayout:getElementById不';如果包含在源文件中,则无法工作

Coldfusion cflayout:getElementById不';如果包含在源文件中,则无法工作,coldfusion,Coldfusion,如果我使用cflayout在CF9中创建布局,如下所示: <cfajaximport tags="cfform"> <cflayout type="border" name="example"> <cflayoutarea position="center" name="_center" source="/example/center.cfm" /> </cflayout> 但是,如果我将center.cfm的内容移动到标记中(并删除源参

如果我使用cflayout在CF9中创建布局,如下所示:

<cfajaximport tags="cfform">
<cflayout type="border" name="example">
    <cflayoutarea position="center" name="_center" source="/example/center.cfm" />
</cflayout>
但是,如果我将center.cfm的内容移动到标记中(并删除源参数),代码将按预期工作。有人能告诉我如何使用center.cfm文件使其工作吗?或者解释为什么这不起作用

谢谢你抽出时间

干杯
标记

您需要使用
AjaxOnLoad
ColdFusion方法,以便在子页面完成加载后启动javascript。您需要在center.cfm中定义如下函数:

<script>
myLoadFunction = function(){
    ThisForm = document.getElementById('myForm');
    alert(ThisForm.id);
}
</script>

myLoadFunction=函数(){
ThisForm=document.getElementById('myForm');
警报(ThisForm.id);
}
然后,在center.cfm中的任意位置添加以下ColdFusion:

<cfset AjaxOnLoad("myLoadFunction") />

当center.cfm在
cflayout
标记中完成加载后,应立即启动
myLoadFunction

编辑:有一节介绍如何处理动态包含的javascript

有关章节:

页面上动态包含的所有JavaScript函数定义(例如通过使用绑定表达式、ColdFusion.navigate函数或ColdFusion Ajax容器标记中的表单提交)必须具有以下语法格式: functionName=函数(参数){函数体}

使用以下格式的函数定义可能不起作用: 函数函数名(参数){function body}


您需要使用
AjaxOnLoad
ColdFusion方法,以便在子页面完成加载后启动javascript。您需要在center.cfm中定义如下函数:

<script>
myLoadFunction = function(){
    ThisForm = document.getElementById('myForm');
    alert(ThisForm.id);
}
</script>

myLoadFunction=函数(){
ThisForm=document.getElementById('myForm');
警报(ThisForm.id);
}
然后,在center.cfm中的任意位置添加以下ColdFusion:

<cfset AjaxOnLoad("myLoadFunction") />

当center.cfm在
cflayout
标记中完成加载后,应立即启动
myLoadFunction

编辑:有一节介绍如何处理动态包含的javascript

有关章节:

页面上动态包含的所有JavaScript函数定义(例如通过使用绑定表达式、ColdFusion.navigate函数或ColdFusion Ajax容器标记中的表单提交)必须具有以下语法格式: functionName=函数(参数){函数体}

使用以下格式的函数定义可能不起作用: 函数函数名(参数){function body}

(丹已经给出了答案,但只是为了证明它能起作用……)

在CF9下,这对我来说效果很好。我不知道为什么添加标签对您不起作用

测试.cfm

<cfajaximport tags="cfform" />
<cflayout type="border" name="example">
    <cflayoutarea position="center" name="_center" source="myForm.cfm" />
</cflayout>
<html>
<head>
<script type="text/javascript">
    function myLoadFunction(){
        ThisForm = document.getElementById('myForm');
        alert(ThisForm.id);
    }
</script>
</head>
<body> 
<cfform name="myForm" id="myForm" action="post">
    <cfinput name="field1" type="text"><br/>
</cfform>
</body>
</html>
<cfset AjaxOnLoad("myLoadFunction") />

myForm.cfm

<cfajaximport tags="cfform" />
<cflayout type="border" name="example">
    <cflayoutarea position="center" name="_center" source="myForm.cfm" />
</cflayout>
<html>
<head>
<script type="text/javascript">
    function myLoadFunction(){
        ThisForm = document.getElementById('myForm');
        alert(ThisForm.id);
    }
</script>
</head>
<body> 
<cfform name="myForm" id="myForm" action="post">
    <cfinput name="field1" type="text"><br/>
</cfform>
</body>
</html>
<cfset AjaxOnLoad("myLoadFunction") />

函数myLoadFunction(){
ThisForm=document.getElementById('myForm');
警报(ThisForm.id);
}

(丹已经提供了答案。但只是为了证明它可以工作….)

在CF9下,这对我来说效果很好。我不知道为什么添加标签对您不起作用

测试.cfm

<cfajaximport tags="cfform" />
<cflayout type="border" name="example">
    <cflayoutarea position="center" name="_center" source="myForm.cfm" />
</cflayout>
<html>
<head>
<script type="text/javascript">
    function myLoadFunction(){
        ThisForm = document.getElementById('myForm');
        alert(ThisForm.id);
    }
</script>
</head>
<body> 
<cfform name="myForm" id="myForm" action="post">
    <cfinput name="field1" type="text"><br/>
</cfform>
</body>
</html>
<cfset AjaxOnLoad("myLoadFunction") />

myForm.cfm

<cfajaximport tags="cfform" />
<cflayout type="border" name="example">
    <cflayoutarea position="center" name="_center" source="myForm.cfm" />
</cflayout>
<html>
<head>
<script type="text/javascript">
    function myLoadFunction(){
        ThisForm = document.getElementById('myForm');
        alert(ThisForm.id);
    }
</script>
</head>
<body> 
<cfform name="myForm" id="myForm" action="post">
    <cfinput name="field1" type="text"><br/>
</cfform>
</body>
</html>
<cfset AjaxOnLoad("myLoadFunction") />

函数myLoadFunction(){
ThisForm=document.getElementById('myForm');
警报(ThisForm.id);
}


我觉得center.cfm文件需要html、body和body标记是不对的,所以我尝试了这个(Dan&Leigh解决方案的组合):

主页:

<html>
<head>
<script type="text/javascript">
    function myLoadFunction(){
        ThisForm = document.getElementById('myForm');
        alert(ThisForm.id);
    }
</script>
<cfajaximport tags="cfform">
</head>
<body> 
<cflayout type="border" name="example">
    <cflayoutarea position="center" name="_center" source="center.cfm" />
</cflayout>
</body>
</html>

函数myLoadFunction(){
ThisForm=document.getElementById('myForm');
警报(ThisForm.id);
}
然后center.cfm就是:

<cfform name="myForm" id="myForm" action="post">
    <cfinput name="field1" type="text"><br/>
</cfform>
<cfset AjaxOnLoad("myLoadFunction") />



这与预期一样有效,我们不会在通过AJAX加载并添加到页面的内容中发送另一个html标记等。

我觉得center.cfm文件需要html、body和body标记是不对的,所以我尝试了这一点(Dan&Leigh的解决方案的组合):

主页:

<html>
<head>
<script type="text/javascript">
    function myLoadFunction(){
        ThisForm = document.getElementById('myForm');
        alert(ThisForm.id);
    }
</script>
<cfajaximport tags="cfform">
</head>
<body> 
<cflayout type="border" name="example">
    <cflayoutarea position="center" name="_center" source="center.cfm" />
</cflayout>
</body>
</html>

函数myLoadFunction(){
ThisForm=document.getElementById('myForm');
警报(ThisForm.id);
}
然后center.cfm就是:

<cfform name="myForm" id="myForm" action="post">
    <cfinput name="field1" type="text"><br/>
</cfform>
<cfset AjaxOnLoad("myLoadFunction") />



这与预期的一样有效,我们不会在通过AJAX加载并添加到页面的内容中发送另一个html标记等。

使用ID name值调用函数参数

我使用ID值调用javascript函数,然后使用ID值和getElementByID:


myLoadFunction=函数(单击ID){
ThisForm=document.getElementById(clickid);
警报(ThisForm.id);
}

使用ID名称值调用函数参数

我使用ID值调用javascript函数,然后使用ID值和getElementByID:


myLoadFunction=函数(单击ID){
ThisForm=document.getElementById(clickid);
警报(ThisForm.id);
}

Hi Dan,谢谢你的回复,但这没有任何区别,因为我仍然会遇到同样的错误。我已经尝试过添加AjaxOnLoad,但没有成功,但我又尝试了一次,以防我输入了一个拼写错误或其他什么。作为测试,我将此添加到页面底部:即使这样也会失败,并出现错误(预期对象)。如果我查看center.cfm,它会按预期工作…只是在cflayout中不起作用。您使用的是我上面使用的格式吗?查一下这方面的信息。编辑我的答案以显示有关该问题的更多信息。您可能需要在center.cfm中添加适当的和标记才能使其正常工作。(函数签名对CF9不重要)@Leigh。我也这么做了。包括索引和中心文件,只是索引,只是中心等。最后我还将上述问题通过电子邮件发送给Ray Camden,看看他是否可以解释,他也无法让它按预期工作。成功地将脚本移到了索引文件中,但这行不通