为什么我的 <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,因此这可能也有效。
非常感谢大家的指点!
我正在处理在数据库中搜索人员的 .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,因此这可能也有效。
非常感谢大家的指点!