JS函数动作分层结构详解及Document.getElementById 释义 事件 函数 变量 script标签 var function

html +css 静态页面

js     动态 交互

原理: js就是修改样式, 比如弹出一个对话框. 弹出的过程就是这个框由disable 变成display:enable. 又或者当鼠标指向的时候换一个颜色,就是一个修改样式的工具.

  • 编写JS的流程

    • 布局:HTML+CSS
    • 事件:确定用户做哪些操作(产品设计)
    • 编写JS:在事件中,用JS来修改页面元素的样式(外加属性:确定要修改哪些属性)
  • 什么是事件

一个完整的事件= <在某个作用域 事件声明=‘函数动作‘> </>

作用域: 作用的标签

事件声明:一个用户操作 例如: 鼠标的进出onmouseover, onmouseout,

函数动作: 一个封装好可以理解为比较复杂的动作.

事件声明也是这个作用域的某个属性, 函数就是这个属性作出的一系列动作

  • 函数的规范位置与封装

格式:

<script>

function+名称+()

{动作1+动作2+动作3+……}

</script>

位置: <script>: Js 代码标签, 函数一般放在head里面.

封装:

函数: fuction+名称+()

  1. 在标签中放置未封装的代码会造成阅读者视觉混乱, 把整段整段的代码封装成函数, 再在标签中调用函数. 文挡会变得整洁.
  2. 当多个标签重复调用时同一个函数时,不用重复把整段代码再敲一遍, 只要调用函数的名字就可以了.

变量:var + 名字+()

变量就是把一些结构复杂的对象赋值到一个简单的名称, 当调用的时候就会减少代码量.


<script>


function toGreen()


{


var oDiv=document.getElementById(‘div1‘);
动作1:div1赋值2给oDiv


oDiv.style.width=‘300px‘; 动作2/3改变div1的宽度


oDiv.style.height=‘300px‘; …….高度


oDiv.style.background=‘green‘; 动作4, 背景变成绿色


}


</script>

注, 如果在script内有暂不运行的语句可以//注释掉

函数动作分层结构详解及Document.getElementById 释义: (重点)

对象属性分为很多层, 用‘.‘ 隔开每一层.后面的是前面的子属性(属性), 可以理解为汉语的‘的‘

实际上每个函数动作都是被分割开来的, 所以你们看到的是一节一节的,实际上举例子

oDiv.style.width=‘300px‘; 这个动作, 是属于:

Document.getElementById(‘div1‘).style.width = ‘300px‘ 而这一整段又属于:

Window.Document.getElementById(‘div1‘).style.width = ‘300px‘


这一整条就是一条完整的事件动作,


window是上层对象


document是二层对象


<节点>节点<节点>节点<节点>节点<节点>节点


getElementById是三层对象(方法)


style四层对象 (一层属性)


height 五层对象 (二层属性)

window 省略是因为,我们在html内操作, 默认是属于document

而因为我们定义了oDiv, 所以在最终的表达上变成了oDiv.style.width=‘300px‘;的形式.

至于Document是一个JS操作文档层面的方法(动作的方法), <html>文档的基本节点都要收它控制, 这些节点包括文本节点, 标签(属性)节点 . 所有尖括号外的范围都成为文本节点, 尖括号里面的脚属性节点. 如果我们不说是什么节点一般默认指的是尖括号里面的.

DOM(Document对象): http://www.w3school.com.cn/jsref/dom_obj_document.asp

(方法就是我们上面描述的动作)


<html>


<head>


<meta
charset="utf-8">


<title>无标题文档</title>


<style>


#div1 {


width:200px;


height:200px;


background:red;


}


</style>


<script>


function toGreen()


{


var oDiv=document.getElementById(‘div1‘);


oDiv.style.width=‘300px‘;


oDiv.style.height=‘300px‘;


oDiv.style.background=‘green‘;


}

 

function toRed()


{


var oDiv=document.getElementById(‘div1‘);


oDiv.style.width=‘200px‘;


oDiv.style.height=‘200px‘;


oDiv.style.background=‘red‘;


}


</script>


</head>

 

<body>


<div


									id="div1" onmouseover="toGreen()" onmouseout="toRed()">

</div>


</body>


</html>

时间: 2024-10-10 21:57:50

JS函数动作分层结构详解及Document.getElementById 释义 事件 函数 变量 script标签 var function的相关文章

Nuxt.js学习(二) --- Nuxt目录结构详解、Nuxt常用配置项、Nuxt路由配置和参数传递

[TOC] 1.Nuxt目录结构详解 Nuxt项目文件目录结构 |-- .nuxt // Nuxt自动生成,临时的用于编辑的文件,build |-- assets // 用于组织未编译的静态资源入LESS.SASS 或 JavaScript |-- components // 用于自己编写的Vue组件,比如滚动组件,日历组件,分页组件 |-- layouts // 布局目录,用于组织应用的布局组件,不可更改. |-- middleware // 用于存放中间件 |-- pages // 用于存放

js 中中括号,大括号使用详解

一.{ } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或是函数.如:var LangShen = {"Name":"Langshen","AGE":"28"};上面声明了一个名为"LangShen"的对象,多个属性或函数用,(逗号)隔开,因为是对象的属性,所以访问时,应该用.(点)来层层访问:LangShen.Name.LangShen.AGE,当然我们也可以用数组的方式来访问,如:Lang

JS中的event 对象详解

JS中的event 对象详解 JS的event对象 Event属性和方法: 1. type:事件的类型,如onlick中的click: 2. srcElement/target:事件源,就是发生事件的元素: 3. button:声明被按下的鼠标键,整数,1代表左键,2代表右键,4代表中键,如果按下多个键,酒把这些值加起来,所以3就代表左右键同时按下:(firefox中 0代表左键,1代表中间键,2代表右键) 4. clientX/clientY:事件发生的时候,鼠标相对于浏览器窗口可视文档区域的

js的offsetParent属性用法详解

js的offsetParent属性用法详解:此属性是javascript中较为常用的属性,对于它的良好掌握也是非常有必要的,下面就通过代码实例介绍一下它的用法,希望能够给需要的朋友带来一定的帮助.一.基本介绍:此属性可以返回距离指定元素最近的采用定位(position属性值为fixed.relative或者absolute)父级元素,如果父级元素中没有采用定位的元素,则返回body对象的引用.语法结构: obj.offsetParent 二.代码实例: <!DOCTYPE html> <

js对象浅拷贝和深拷贝详解

js对象浅拷贝和深拷贝详解 作者:i10630226 字体:[增加 减小] 类型:转载 时间:2016-09-05我要评论 这篇文章主要为大家详细介绍了JavaScript对象的浅拷贝和深拷贝代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文为大家分享了JavaScript对象的浅拷贝和深拷贝代码,供大家参考,具体内容如下 1.浅拷贝 拷贝就是把父对像的属性,全部拷贝给子对象. 下面这个函数,就是在做拷贝: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 var

PHP扩展代码结构详解

PHP扩展代码结构详解: 这个是继:使用ext_skel和phpize构建php5扩展  内容 (拆分出来) Zend_API:深入_PHP_内核:http://cn2.php.net/manual/zh/internals2.ze1.php 我们使用ext_skel创建扩展 hello_module,该模块包含一个方法:hello_world. 使用ext_skel 生成的代码都是PHP_开头的宏, 而不是ZEND_开头. 实际上这两者是一样的. 在源代码src/main/PHP.h 中发现:

Node.js开发入门—Stream用法详解

Stream是Node.js中非常重要的一个模块,应用广泛.一个流是一个具备了可读.可写或既可读又可写能力的接口,通过这些接口,我们可以和磁盘文件.套接字.HTTP请求来交互,实现数据从一个地方流动到另一个地方的功能. 所有的流都实现了EventEmitter的接口,具备事件能力,通过发射事件来反馈流的状态.比如有错误发生时会发射"error"事件,有数据可被读取时发射"data"事件.这样我们就可以注册监听器来处理某个事件,达到我们的目的. Node.js定义了R

实例详解Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化(一)

在数据库有外键的时候,使用 select_related() 和 prefetch_related() 可以很好的减少数据库请求的次数,从而提高性能.本文通过一个简单的例子详解这两个函数的作用.虽然QuerySet的文档中已经详细说明了,但本文试图从QuerySet触发的SQL语句来分析工作方式,从而进一步了解Django具体的运作方式. 本来打算写成一篇单独的文章的,但是写完select_related()之后发现长度已经有点长了,所以还是写成系列,大概在两到三篇.整个完成之后将会在这里添加上

实例详解Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化(三)

这是本系列的最后一篇,主要是select_related() 和 prefetch_related() 的最佳实践. 第一篇在这里 讲例子和select_related() 第二篇在这里 讲prefetch_related() 4. 一些实例 选择哪个函数 如果我们想要获得所有家乡是湖北的人,最无脑的做法是先获得湖北省,再获得湖北的所有城市,最后获得故乡是这个城市的人.就像这样: >>> hb = Province.objects.get(name__iexact=u"湖北省&