Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.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
javascript错误:select未定义。仅在Mura插件公共输出中运行时发生_Javascript_Coldfusion_Mura - Fatal编程技术网

javascript错误:select未定义。仅在Mura插件公共输出中运行时发生

javascript错误:select未定义。仅在Mura插件公共输出中运行时发生,javascript,coldfusion,mura,Javascript,Coldfusion,Mura,我正在创建一个插件的公共端,当我在Mura之外运行相同的代码或在JSFIDLE上运行它时,会出现javascript错误 javascript非常简单。它根据不同选择的值填充表单选择。这里是一个html和javascript的JSFIDLE,它可以自己工作。 在插件的公共视图中,我有以下内容 <cfset rc.$.loadJSLib() /> <cfset rc.pc.addToHTMLHeadQueue("addendaJsInclude.cfm")> <f

我正在创建一个插件的公共端,当我在Mura之外运行相同的代码或在JSFIDLE上运行它时,会出现javascript错误

javascript非常简单。它根据不同选择的值填充表单选择。这里是一个html和javascript的JSFIDLE,它可以自己工作。

在插件的公共视图中,我有以下内容

<cfset rc.$.loadJSLib() />
<cfset rc.pc.addToHTMLHeadQueue("addendaJsInclude.cfm")>

<form name="form" method="post" action="addenda2.cfm" onSubmit="return checkrequired(this)">
<select name="mRoute" onchange="javascript:populateData(this.options[selectedIndex].text)">
    <option value="">Select Route</option>
    <option value="Route 3">Route 3</option>
    <option value="Route 2">Route 2</option>
    <option value="Route 1">Route 1</option>
</select>    

<select name="mSection">
    <option value="">Section</option>
</select>

<input type="submit" name="submit">
</form>

选择路线
三号干线
二号干线
一号干线
部分
我的addendaJsInclude.cfm文件包括以下内容:

var arrayData = new Array();
arrayData[0] = 'Route 1|1|'
arrayData[1] = 'Route 1|2|'
arrayData[2] = 'Route 1|3|'
arrayData[3] = 'Route 1|4|'
arrayData[4] = 'Route 1|5|'
arrayData[5] = 'Route 1|6|'
arrayData[6] = 'Route 1|7|'
arrayData[7] = 'Route 2|1|'
arrayData[8] = 'Route 3|1|'

function populateData( name ) { 
    select = window.document.form.mSection; 
    string = ""; 
    count = 1; 
    select.options.length = count; 
    for( i = 0; i < arrayData.length; i++ ) { 
        string = arrayData[i].split( "|" ); 

        if( string[0] == name ) { 
            select.options[count++] = new Option( string[1] ); 
        } 
    } 
}

function checkrequired(which) {
    var pass=true;
    if (document.images) {
        for (i=0;i<which.length;i++) {
            var tempobj=which.elements[i];
            if (tempobj.name.substring(0,1)=="m") {
                if (((tempobj.type=="text"||tempobj.type=="textarea")&&
                tempobj.value=='')||(tempobj.type.toString().charAt(0)=="s"&&
                tempobj.selectedIndex==0)) {
                    pass=false;
                    break;
                }
              }
        }
    }
    if (!pass) {
        shortFieldName=tempobj.name.substring(1,12).toUpperCase();
        alert("Please select a "+shortFieldName+".");
        return false;
    }
    else
    return true;
}
var arrayData=new Array();
arrayData[0]=“路线1 | 1 |”
arrayData[1]=“路线1 | 2 |”
arrayData[2]=“路线1 | 3 |”
arrayData[3]=“路线1 | 4 |”
arrayData[4]=“路线1 | 5 |”
arrayData[5]=“路线1 | 6 |”
arrayData[6]=“路线1 | 7 |”
arrayData[7]=“路线2 | 1 |”
arrayData[8]=“路线3 | 1 |”
函数填充数据(名称){
选择=window.document.form.m节;
字符串=”;
计数=1;
选择.options.length=count;
对于(i=0;i对于(i=0;i除了name=“mSection”之外,您是否可以尝试为选择指定一个ID=“mSection”?

问题是由cf debug输出引起的。禁用调试允许代码按预期工作。这只发生在通过Mura运行代码时,但我猜这是由于调试将显示内容显示为变量。

我考虑了类似的建议,但感觉那里有很多JS可以调整+时间晚了!特别是在JSFIDLE中,即使不是理想的方法,也可以尝试使用与“select”不同的变量名称吗?我尝试向select添加id值,并更改了select变量名称,但仍然遇到相同的问题。我简化了示例,甚至简化了f顶部的警报函数在my Mura页面中运行时返回为未定义?首先,在声明
select
变量时使用
var
关键字。否则它将在全局(窗口)范围内,理论上可能会被其他代码破坏。其次,要进行故障排除,请添加
console.log(window.document.form);
字符串=”;
之前,然后检查控制台。您将看到在运行时表单中实际有哪些元素可用。旁注:
选择
,因为变量名充其量是令人困惑的。