HTML ELEMENTS行为中Javascript中的“ This”关键字

时间:2019-09-27 11:58:13

标签: javascript html ajax dom

th,td {
  padding: 5px;
}
</style>
<body>

<h2>The XMLHttpRequest Object</h2>

<form action=""> 
  <select name="customers" onchange="showCustomer(this.value)">
    <option value="">Select a customer:</option>
    <option value="ALFKI">Alfreds Futterkiste</option>
    <option value="NORTS ">North/South</option>
    <option value="WOLZA">Wolski Zajazd</option>
  </select>
</form>
<br>
<div id="txtHint">Customer info will be listed here...</div>

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

嘿,很抱歉,这是一个基本问题:)只是研究了一些JavaScript的AJAX,我对onchange EventHandler中的此代码块中“ this”的使用感到困惑。似乎“ this”指的是选项元素,但我真的不明白如何或为什么。

编辑:似乎不是那么基本。

我阅读了有关“ this”的一般问题的详细答案

How does the "this" keyword work?

也是很棒的文章:

http://www.digital-web.com/articles/scope_in_javascript/

他们两个都为很多人服务,但并不能完全解决我的问题。

我无法弄清楚“ this”在带有JavaScript函数的HTML元素内使用时的确切行为是什么。

我希望有人能理解我的意思

1 个答案:

答案 0 :(得分:-1)

这是指它所属的对象,例如

class dogs {
constructor () {
    this.name = 'dogs'
    console. log(this.nane) // returns dogs
    this.bread = function () {
        console. log(this.name) // returns undefined
        this.type = "pug"
        console. log(this.type) // returns pug
    }
    console. log(this.type) // undefined
    console. log(this.bread.type) // pug
    }
}
}