Javascript Ajax没有';更改document.getElementById时无法工作

Javascript Ajax没有';更改document.getElementById时无法工作,javascript,ajax,Javascript,Ajax,我有以下代码,我在W3Schools找到了,当我使用文档时,getElementById可以工作,当我将其更改为文档时。getElementsByCassName(在我的完整代码中,我将有超过我为什么认为应该使用文档。getElementsByCassByCassName)它只是停止工作 <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <!--#include file="Connections/PSCRM.asp" --> <%

我有以下代码,我在W3Schools找到了,当我使用
文档时,getElementById
可以工作,当我将其更改为
文档时。getElementsByCassName
(在我的完整代码中,我将有超过

我为什么认为应该使用
文档。getElementsByCassByCassName
)它只是停止工作

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--#include file="Connections/PSCRM.asp" -->
<%
Dim Recordset1
Dim Recordset1_cmd
Dim Recordset1_numRows

Set Recordset1_cmd = Server.CreateObject ("ADODB.Command")
Recordset1_cmd.ActiveConnection = MM_PSCRM_STRING
Recordset1_cmd.CommandText = "SELECT prodref FROM dba.proditem where created >= '2015-08-01' and obsolete = '0' ORDER BY prodref asc" 
Recordset1_cmd.Prepared = true

Set Recordset1 = Recordset1_cmd.Execute
Recordset1_numRows = 0
%>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>

<body>
<form action="">
<input type="text" onChange="showCustomer(this.value)" value="">
</form>

<br>
<div class="txtHint">Customer info will be listed here...</div>

<script>
function showCustomer(str) {
  var xhttp;    
  if (str == "") {
    document.getElementsByClassName("txtHint").innerHTML = "";
    return;
  }
  xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
      document.getElementsByClassName("txtHint").innerHTML = xhttp.responseText;
    }
  }
  xhttp.open("GET", "data.asp?prodref="+str, true);
  xhttp.send();
}
</script>

</body>
</html>
<%
Recordset1.Close()
Set Recordset1 = Nothing
%>

无标题文件

客户信息将列在这里。。。 功能显示客户(str){ var-xhttp; 如果(str==“”){ document.getElementsByClassName(“txtHint”).innerHTML=“”; 返回; } xhttp=newXMLHttpRequest(); xhttp.onreadystatechange=函数(){ 如果(xhttp.readyState==4&&xhttp.status==200){ document.getElementsByClassName(“txtHint”).innerHTML=xhttp.responseText; } } xhttp.open(“GET”,“data.asp?prodref=“+str,true”); xhttp.send(); }
GetElementsByCassName
返回节点的集合,而不是单个节点。您需要迭代该集合,并在每个节点上设置
innerHTML
属性:

var nodes = document.getElementsByClassName("txtHint");
for (var i = 0; i < nodes.length; i++)
    nodes[i].innerHTML = '';
var nodes=document.getElementsByClassName(“txtHint”);
对于(var i=0;i

您当前的代码正在集合本身上设置属性,该属性是完全有效的JavaScript,不会出错,但也不会导致任何更新-只是现在节点集合有一个未使用的
innerHTML
属性。

getElementsByClassName
返回一个节点集合,而不是单个节点。您需要迭代该集合,并在每个节点上设置
innerHTML
属性:

var nodes = document.getElementsByClassName("txtHint");
for (var i = 0; i < nodes.length; i++)
    nodes[i].innerHTML = '';
var nodes=document.getElementsByClassName(“txtHint”);
对于(var i=0;i

您当前的代码正在集合本身上设置属性,因为它是完全有效的JavaScript,不会出错,但也不会导致任何更新-只是现在节点集合有一个未使用的
innerHTML
属性。

如果您查看文档,您会注意到,您返回的是对象数组,而返回的是单个元素

对于数组,innerHtml没有原型,它只在单个元素上公开

您需要做的是遍历从getElementsByClassName检索的元素列表

var elements =document.getElementsByClassName("txtHint");
for(var i = 0; i < elements.length; i++){
 elements[i].innerHTML = xhttp.responseText
};
var elements=document.getElementsByClassName(“txtHint”);
对于(var i=0;i

尝试一下,看看它是否有用。如果您查看文档中的,您会注意到您返回的是一个object数组,而返回的是单个元素

对于数组,innerHtml没有原型,它只在单个元素上公开

您需要做的是遍历从getElementsByClassName检索的元素列表

var elements =document.getElementsByClassName("txtHint");
for(var i = 0; i < elements.length; i++){
 elements[i].innerHTML = xhttp.responseText
};
var elements=document.getElementsByClassName(“txtHint”);
对于(var i=0;i

试试看它是否有帮助

getElement
s
ByClassName返回一个元素数组,而
getElementById
只返回一个元素。您可以使用
document.getElementsByClassName(“txtHint”)[0]
来解决这个问题。您需要使用chrome、safari、IE9+或firefox 3+才能使用此功能,以及[index]中提到的数组。顺便说一句,很久没有看到asp页面了:-)谢谢你的评论。我真的应该从ASP升级。由于遇到的原因,一个页面中不应该有多个相同ID。这就是为什么使用类是一种很好的做法,特别是当您需要在任何给定时间追加任何div时。getElement
s
ByClassName返回一个元素数组,而
getElementById
只返回一个元素。您可以使用
document.getElementsByClassName(“txtHint”)[0]
来解决这个问题。您需要使用chrome、safari、IE9+或firefox 3+才能使用此功能,以及[index]中提到的数组。顺便说一句,很久没有看到asp页面了:-)谢谢你的评论。我真的应该从ASP升级。由于遇到的原因,一个页面中不应该有多个相同ID。这就是为什么使用类是一种很好的做法,特别是当您需要在任何给定时间附加任何div时。