<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Test.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
<script>
function show(city) {
alert(city);
}
</script> </head>
<body>
<table>
<tr>
<td><a href="javascript:show(this.innerText)">苏州</a></td>
</tr>
<tr>
<td><a onclick="show(this.innerText)">上海</a></td>
</tr>
</table>
</body>
</html>
为什么苏州取不到值,上海可以取到值?
this指window对象<a onclick="show(this.innerText)">上海</a>
this指a元素本身
“javascript:”是伪协议(“http:”是协议)
等于
<a href="javascript:show(window.innerText)">window是没有innerText属性的
点击后等效于在js里写了一句show(this.innerText)
而并不是一个事件处理器
this在全局的时候指window对象伪协议只是一种说法(相对协议而言,如HTTP协议)onclick="show(this.innerText)"
是添加了一个事件处理程序
默认会将this指向触发该事件的元素
this指window对象 <a onclick="show(this.innerText)">上海 </a>
this指a元素本身window是没有innerText属性的 ----一楼``
这样理解是不是容易些?
<a onclick="show(this.innerText)">上海 </a> 可以这么理解:this指针在函数内动态的指向调用该函数的对象,所以第二个this处于调用对象anchor的事件Onclick的委托函数show内部,自然指向anchor对象,也就是"a",显示正常;第一个,按照上面的理解,而this默认则指向window对象,而该对象污innerText属性,出错。
点击后等效于在js里写了一句show(this.innerText) 这句很好。。学习了