我正在努力学习和理解XML。我在W3schools上找到了这个例子。 函数获取参数xml的部分。 我不明白为什么它需要这个参数是否有人可以向我解释这个?
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myFunction(this);
}
};
xhttp.open("GET", "cd_catalog.xml", true);
xhttp.send();
}
function myFunction(xml) {
var i;
var xmlDoc = xml.responseXML;
var table="<tr><th>Artist</th><th>Title</th></tr>";
var x = xmlDoc.getElementsByTagName("CD");
for (i = 0; i <x.length; i++) {
table += "<tr><td>" +
x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue +
"</td><td>" +
x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue +
"</td></tr>";
}
document.getElementById("demo").innerHTML = table;
}
答案 0 :(得分:0)
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
console.log(this);
}
};
this 关键字指的是运行某个函数的上下文。它可能是一个Object,通常是它的Window。 实例
function hi(){
alert(this);//window
}
function person(){
this.hi=hi;
}
Mark=new Person();
Mark.hi();//mark
在您的示例中,这是xml对象。例如,您可以访问this.responseXML。 但是这并不像其他语言那样:
function inyourxmlcallback(){
alert(this);//xml
hi();//window
}
函数调用不会自动将其绑定到被调用的函数。您需要手动完成:
hi.call(this);//xml object
W3学校只是将上下文作为变量传递,以便稍后使用。 例如:
var test=this;
alert(test);//window