我如何将事件侦听器分配给 div 以允许 div 的宽度和高度在单击时增长 20%
How would I assign an event-listener to a div that allows the width and height of the div to grow 20% when clicked
我已经开始写出来了,我使用了与我在上一个问题中使用的相同大小(100px x 100px)。尽管我计划在将来的某个时间使用 jQuery,但我现在尝试只使用 Javascript。我现在看到的主要问题是在线 (this.style.width
) 'this' 尚未定义,因此代码不知道 'this' 指的是 div 而我是不确定如何使用事件侦听器而不是 childNodes
(我知道该怎么做)来完成此操作。
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<style>
div {background-color: #999999;width: 100px;height: 100px;}
</style>
<title></title>
</head>
<body>
<div id="myDiv" onClick="handleClick(event)"></div>
<script src="js/main.js"></script>
</body>
</html>
/**
* Created by Mark M.G on 4/1/2015.
* n221
*/
function handleClick(event){
this.style.width = ( parseInt( this.style.width ) *1.2 ) + 'px';
this.style.height = ( parseInt( this.style.height ) *1.2 ) + 'px';
}
尝试在 onClick
事件中使用 this
而不是 event
,并在事件处理程序中使用不同的参数名称,例如“element
”以避免混淆. :) 然后将事件处理程序中的this
替换为参数名称('element
')以访问事件处理程序中单击的元素。
这是基于您的代码的纯 JS 工作解决方案:http://jsfiddle.net/oco94wrs/1/
HTML:
<div id="myDiv"></div>
CSS:
div {background-color: #999999;width: 100px;height: 100px;}
Javascript:
var div = document.getElementById('myDiv');
div.addEventListener('click', function (event) {
this.style.width = ( parseInt( this.offsetWidth ) *1.2 ) + 'px';
this.style.height = ( parseInt( this.offsetHeight ) *1.2 ) + 'px';
});
现在,this
指的是实际的 div,因为我将点击事件侦听器直接分配给了 div。
在您的代码中,this
指的是 window 对象,因为它在全局函数中。
另一个可能的解决方案是使用 event.target.
我已经开始写出来了,我使用了与我在上一个问题中使用的相同大小(100px x 100px)。尽管我计划在将来的某个时间使用 jQuery,但我现在尝试只使用 Javascript。我现在看到的主要问题是在线 (this.style.width
) 'this' 尚未定义,因此代码不知道 'this' 指的是 div 而我是不确定如何使用事件侦听器而不是 childNodes
(我知道该怎么做)来完成此操作。
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<style>
div {background-color: #999999;width: 100px;height: 100px;}
</style>
<title></title>
</head>
<body>
<div id="myDiv" onClick="handleClick(event)"></div>
<script src="js/main.js"></script>
</body>
</html>
/**
* Created by Mark M.G on 4/1/2015.
* n221
*/
function handleClick(event){
this.style.width = ( parseInt( this.style.width ) *1.2 ) + 'px';
this.style.height = ( parseInt( this.style.height ) *1.2 ) + 'px';
}
尝试在 onClick
事件中使用 this
而不是 event
,并在事件处理程序中使用不同的参数名称,例如“element
”以避免混淆. :) 然后将事件处理程序中的this
替换为参数名称('element
')以访问事件处理程序中单击的元素。
这是基于您的代码的纯 JS 工作解决方案:http://jsfiddle.net/oco94wrs/1/
HTML:
<div id="myDiv"></div>
CSS:
div {background-color: #999999;width: 100px;height: 100px;}
Javascript:
var div = document.getElementById('myDiv');
div.addEventListener('click', function (event) {
this.style.width = ( parseInt( this.offsetWidth ) *1.2 ) + 'px';
this.style.height = ( parseInt( this.offsetHeight ) *1.2 ) + 'px';
});
现在,this
指的是实际的 div,因为我将点击事件侦听器直接分配给了 div。
在您的代码中,this
指的是 window 对象,因为它在全局函数中。
另一个可能的解决方案是使用 event.target.