Javascript Ajax没有';更改document.getElementById时无法工作
我有以下代码,我在W3Schools找到了,当我使用Javascript Ajax没有';更改document.getElementById时无法工作,javascript,ajax,Javascript,Ajax,我有以下代码,我在W3Schools找到了,当我使用文档时,getElementById可以工作,当我将其更改为文档时。getElementsByCassName(在我的完整代码中,我将有超过我为什么认为应该使用文档。getElementsByCassByCassName)它只是停止工作 <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <!--#include file="Connections/PSCRM.asp" --> <%
文档时,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时。getElements
ByClassName返回一个元素数组,而getElementById
只返回一个元素。您可以使用document.getElementsByClassName(“txtHint”)[0]
来解决这个问题。您需要使用chrome、safari、IE9+或firefox 3+才能使用此功能,以及[index]中提到的数组。顺便说一句,很久没有看到asp页面了:-)谢谢你的评论。我真的应该从ASP升级。由于遇到的原因,一个页面中不应该有多个相同ID。这就是为什么使用类是一种很好的做法,特别是当您需要在任何给定时间附加任何div时。