开发者社区> 问答> 正文

js中body里能用this来代替吗 js报错 

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

<title>star</title>

<meta name="description" content="">

<meta name="keywords" content="">

<link href="" rel="stylesheet">

<script type="text/javascript">

    function init(obj){

        obj.bgColor= "black";//这行为什么不能改变网页背景颜色。this不是代表body对象吗。

       // alert(123);

       //var obj=document.getElementById("b1"); 这样就可以获得body对象,能更改网页背景颜色。

       //obj.bgColor= "black";

    }

</script>

</head>

<!--onload页面加载之后立即执行一段 JavaScript:-->

<body onload="init(this)" id="b1">

 

     

</body>

</html>
请教各位大神,为什么我在body里用this,而无法改变body的背景颜色,必须要用要用id来获取body这个对象。我想了一上午也没想通。请朋友帮忙给说下。

展开
收起
kun坤 2020-06-03 11:19:00 506 0
1 条回答
写回答
取消 提交回答
  • 你可理解为js的一种特性,在body onload中的this指的是window,在img、frame等地方onload中的this指的就是该dom,就是这么奇怪。###### http://www.w3.org/TR/2012/WD-html5-20121025/section-index.html#ix-handler-window-onload

    嗯,人家W3C就是这么规定的 >_<

    PS:
    body 上的 bgcolor 属性已经在 html5 中被弃用,推荐使用CSS…… ######this表示调用它所在函数的那个对象吧,window调用了onload所以this就是window######我是body调用了this,今天这个问题我想了一上午,不过谢谢

    2020-06-03 11:19:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载