为什么我的 <script> 会给我一个未定义的错误,即使它正在被调用?

Why is my <script> giving me an undefined error even though it is being called?

我正在处理在数据库中搜索人员的 .cfm 文件。一旦我使用 'onKeyUp' 开始输入,搜索表单应该填充一串名称,但是它告诉我我的变量 'stearchy' 未定义。

我对 ColdFusion 操纵 DOM 元素相当陌生,但我认为这是一个范围问题,因为它只是不阅读它。我尝试过的以下内容是: 将 onKeyUp 放在函数下方。

任何方向正确的帮助都会很棒。以下是 var 代码:

var stearchy = function() {
  while ( document.getElementById("daGuess").options.length ) document.getElementById("daGuess").options[0] = null;
  nam = [];
  hs = [];
  var boundLeft = document.getElementById("daSearch").value.indexOf(" ");
  if (boundLeft <= 0) var boundLeft = document.getElementById("daSearch").value.length;
  var boundRight = document.getElementById("daSearch").value.indexOf(" ")+1;
  <!--- if (boundRight == -1) var boundRight = 0; --->
  var ges = [];
  for ( i = 0; i < alums.length; i++ ) {            
    if (boundLeft > 0) {
      if ( document.getElementById("daSearch").value.search(/[A-Z][a-z]/) != -1) { 
        var noo = removeDiacritics(alums[i]["NameNickname"]).indexOf(removeDiacritics(document.getElementById("daSearch").value.slice(0,boundLeft)));
        var moo = removeDiacritics(alums[i]["NameFirst"]).indexOf(removeDiacritics(document.getElementById("daSearch").value.slice(0,boundLeft)));
        var loo = removeDiacritics(alums[i]["NameLast"]).indexOf(removeDiacritics(document.getElementById("daSearch").value.slice(boundRight,document.getElementById("daSearch").value.length)));
      /*Otherwise do a case-insensitive search*/
      } else {
        var noo = removeDiacritics(alums[i]["NameNickname"]).toLowerCase().indexOf(removeDiacritics(document.getElementById("daSearch").value.toLowerCase().slice(0,boundLeft)));
        var moo = removeDiacritics(alums[i]["NameFirst"]).toLowerCase().indexOf(removeDiacritics(document.getElementById("daSearch").value.toLowerCase().slice(0,boundLeft)));
        var loo = removeDiacritics(alums[i]["NameLast"]).toLowerCase().indexOf(removeDiacritics(document.getElementById("daSearch").value.toLowerCase().slice(boundRight,document.getElementById("daSearch").value.length)));
      }
      if (document.getElementById("daSearch").value.indexOf(" ") > 0 && document.getElementById("daSearch").value.indexOf(" ") < document.getElementById("daSearch").value.length-1) {
        if ( noo != -1 && loo != -1 ) { 
          ges[ges.length] = {tex:'"'+alums[i]["NameNickname"]+'"'+' '+alums[i]["NameFirst"]+' '+alums[i]["NameMiddle"]+' '+alums[i]["NameLast"].toUpperCase(),val:alums[i]["IDStudent"],nam:alums[i]["NameNickname"]+' '+alums[i]["NameLast"],hs:alums[i]["HS"]};
        }
        if ( moo != -1 && loo != -1 ) { 
          if(alums[i]["NameNickname"] != '') {
            ges[ges.length] = {tex:'"'+alums[i]["NameNickname"]+'"'+' '+alums[i]["NameFirst"]+' '+alums[i]["NameMiddle"]+' '+alums[i]["NameLast"].toUpperCase(),val:alums[i]["IDStudent"],nam:alums[i]["NameNickname"]+' '+alums[i]["NameLast"],hs:alums[i]["HS"]};
          } else {
            ges[ges.length] = {tex:alums[i]["NameFirst"]+' '+alums[i]["NameMiddle"]+' '+alums[i]["NameLast"].toUpperCase(),val:alums[i]["IDStudent"],nam:alums[i]["NameFirst"]+' '+alums[i]["NameLast"],hs:alums[i]["HS"]};
          }
        }
      } else {
        if ( noo != -1 ) { 
          ges[ges.length] = {tex:'"'+alums[i]["NameNickname"]+'"'+' '+alums[i]["NameFirst"]+' '+alums[i]["NameMiddle"]+' '+alums[i]["NameLast"].toUpperCase(),val:alums[i]["IDStudent"],nam:alums[i]["NameNickname"]+' '+alums[i]["NameLast"],hs:alums[i]["HS"]};
        }
        if ( moo != -1 ) { 
          if(alums[i]["NameNickname"] != '') {
            ges[ges.length] = {tex:'"'+alums[i]["NameNickname"]+'"'+' '+alums[i]["NameFirst"]+' '+alums[i]["NameMiddle"]+' '+alums[i]["NameLast"].toUpperCase(),val:alums[i]["IDStudent"],nam:alums[i]["NameNickname"]+' '+alums[i]["NameLast"],hs:alums[i]["HS"]};
          } else {
            ges[ges.length] = {tex:alums[i]["NameFirst"]+' '+alums[i]["NameMiddle"]+' '+alums[i]["NameLast"].toUpperCase(),val:alums[i]["IDStudent"],nam:alums[i]["NameFirst"]+' '+alums[i]["NameLast"],hs:alums[i]["HS"]};
          }
        }
        if (boundRight < document.getElementById("daSearch").value.length) {
          if ( loo != -1  ) { 
            if(alums[i]["NameNickname"] != '') {
              ges[ges.length] = {tex:'"'+alums[i]["NameNickname"]+'"'+' '+alums[i]["NameFirst"]+' '+alums[i]["NameMiddle"]+' '+alums[i]["NameLast"].toUpperCase(),val:alums[i]["IDStudent"],nam:alums[i]["NameNickname"]+' '+alums[i]["NameLast"],hs:alums[i]["HS"]};
            } else {
              ges[ges.length] = {tex:alums[i]["NameFirst"]+' '+alums[i]["NameMiddle"]+' '+alums[i]["NameLast"].toUpperCase(),val:alums[i]["IDStudent"],nam:alums[i]["NameFirst"]+' '+alums[i]["NameLast"],hs:alums[i]["HS"]};
            }
          }
        }
      }
    }
  }

这是搜索表单的 onKeyUp 函数:

<cfif isDefined("form.RegGuest") OR isDefined("form.RegAlum")>
    Search: <input type="text" name="daSearch" value="" id="daSearch" onkeyup="stearchy()">

    <script> 
    document.getElementById("daSearch").focus();
    </script>
</cfif> 

可能是

<cfif isDefined("form.RegGuest") OR isDefined("form.RegAlum")>
    Search: <input type="text" name="daSearch" value="" id="daSearch" onkeyup="stearchy()">
    <cfoutput>
       <script type="text/javascript"> 
          document.getElementById("daSearch").focus();
       </script>
    </cfoutput>
</cfif> 

我找到了答案:

我遇到了一个字符串文字问题,它不允许实际变量工作。

之前是什么:

                    var alums = [<cfoutput query="Final">{NameNickname:"#Replace(Trim(NameNickname),"""","'","ALL")#",NameFirst:"#Replace(Trim(NameFirst),"""","'","ALL")#",NameMiddle:"#Replace(Trim(NameMiddle),"""","'","ALL")#",NameLast:"#Replace(Trim(NameLast),"""","'","ALL")#",Email:"#Trim(PhoneNumber)#",IDStudent:"#IDStudent#",HS:"#School_current#"}<cfif RecordCount NEQ CurrentRow>,</cfif></cfoutput>];

我必须将电子邮件字符串从 phone 数字更改为正确读取。

            var alums = [<cfoutput query="Final">{NameNickname:"#Replace(Trim(NameNickname),"""","'","ALL")#",NameFirst:"#Replace(Trim(NameFirst),"""","'","ALL")#",NameMiddle:"#Replace(Trim(NameMiddle),"""","'","ALL")#",NameLast:"#Replace(Trim(NameLast),"""","'","ALL")#",Email:"",IDStudent:"#IDStudent#",HS:"#School_current#"}<cfif RecordCount NEQ CurrentRow>,</cfif></cfoutput>];

不过,我确实更改了 var 函数并输入了 text/javascript,因此这可能也有效。

非常感谢大家的指点!