为什么我的JS对DIV2不起效果?如何对DIV1与DIV2同时起效果!
<div id="div1">
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
</div>
<div id="div2">
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
</div>
<script type="text/javascript">
for(i=1;i<=2;i++){
var a=document.getElementById("div"+i);
a.style.overflow="hidden";
if(parseInt(a.offsetHeight)>=100)
{
a.style.height="100px";
a.onmouseover=function(){
a.style.overflow="auto";
}
a.onmouseout=function(){
a.style.overflow="hidden";
}
}
}
</script>
<div id="div1">
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
</div>
<div id="div2">
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
</div>
<script type="text/javascript">
for(i=1;i<=2;i++){
var a=document.getElementById("div"+i);
a.style.overflow="hidden";
if(parseInt(a.offsetHeight)>=100)
{
a.style.height="100px";
a.onmouseover=function(){
a.style.overflow="auto";
}
a.onmouseout=function(){
a.style.overflow="hidden";
}
}
}
</script>
<div id="div1">
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
</div>
<div id="div2">
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
</div>
<script type="text/javascript">
window.onload=function(){
for(i=1;i<=2;i++){
var a=document.getElementById("div"+i);
a.style.overflow="hidden";
if(parseInt(a.offsetHeight)>=100)
{
a.style.height="100px";
a.onmouseover=(function(obj){
return function(){obj.style.overflow="auto";}
})(a);
a.onmouseout=(function(obj){
return function(){obj.style.overflow="hidden";}
})(a);
}
}
}
</script>
<script type="text/javascript"></script>
<body>
<div id="div1" style="background-color:#FF6600">
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
</div>
<div id="div2" style="margin-top:50px;background-color:#A9F5A9">
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
</div>
<script type="text/javascript">
for(i=1;i<=2;i++){
var a=document.getElementById("div"+i);
if(parseInt(document.getElementById("div"+i).offsetHeight)>=100)
{
a.style.height="100px";
a.onmouseover=function(){
this.style.overflow="auto";//a改成了this
}
a.onmouseout=function(){
this.style.overflow="hidden";//同上
}
}
}
</script>
</body>
</html>按照原来的代码,当鼠标在div1上的时候,要执行函数onmouseover,但是a.style.overflow="auto";中的a到底指向了什么?a其实是指的div2。该成this后就指向当前对象。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
<title>Insert title here</title>
<script type="text/javascript">
</script>
</head>
<body>
<div id="div1">AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
</div>
<div id="div2">AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
</div>
<script type="text/javascript"> for (var i = 1; i <= 2; i++){
var a = document.getElementById("div" + i);
a.style.overflow = "hidden";
if (parseInt(a.offsetHeight) >= 100) {
a.style.height = "100px";
a.onmouseover = function(target) {
return function() {
target.style.overflow = "auto";
};
}(a);
a.onmouseout = function(target) {
return function() {
target.style.overflow = "hidden";
};
}(a);
}
}
</script>
</body>
</html>现在全起作用了
在运行的时候,a早已运行到最后一个,也就是div2。所以无论触发哪个对象的事件。a永远代表div2解决这个问题。只有使用闭包来解决。先传进function,然后通过target,把对象的值保存起来
两个DIV的innerHTML都一样,你能分出来哪个是哪个??
HTML和JS都改了下,更直观了:
<div id="div1">
11111111111111111111111111<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
</div>
<hr>
<div id="div2">
22222222222222222222222<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
AAAAAAAAAAAAAAAAAAAAA<br>
BBBBBBBBBBBBBBBBBBBBB<br>
AAAAAAAAAAAAAAAAAAAAA<br>
</div>
<script type="text/javascript">
for(i=1;i<=2;i++){
var a=document.getElementById("div"+i);
a.style.overflow="hidden";
if(parseInt(a.offsetHeight)>=100)
{
a.style.height="100px";
a.onmouseover=function(){ event.srcElement.style.overflow="auto"; }
a.onmouseout=function(){ event.srcElement.style.overflow="hidden"; }
}
}
</script>