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

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

 

  • 自定义标签 与Javascript函数动作
<div
id="div1" onmouseover="toGreen()" onmouseout="toRed()">

 

既然我们可以定义出toGreen这个复合的动作, 那就可以将这个函数动作嵌入到标签的属性当中


<div id class type display…… > </div>

当'=' 等号还没出现的时候, 这些id等这些属性都是隐藏的, 或者赋予默认的值.

一旦'='出现, 这个事件属性就会被赋值, 也就是发生变化. 最终这个赋值会指向一个数据.

 

而不同的事件属性可能会被赋予不同的值, 浅层属性id 可能会指向一个字符串.    有些会指向一个javascrip或者css style 而最终指向的叫数据(数据类型).

 

  • CSS 与 JavaScript 的数据类型区别

 

css的数据类型 (而这些全部的类型都是字符串,或者说是text类型, 他们是经过封装的)

文本(Textual)

  • 关键词(Keywords): <ident>
  • 自定义关键词:<custom-ident>
  • 引用字符串: <string>
  • 资源定位器:<url>

    基本数字(Basic Numeric)

  • 整数(Integers):<integer>
  • 实数:<number>
  • 比率:<ratio>
  • 百分比:<percentage>

    维度(Dimensions)

  • 距离(Distances):<length>
  • 角度:<angle>
  • 延迟时间(Duration):<duration>
  • 频率(Frequency):<frequency>
  • 分辨率(Resolution):<resolution>

    其它(Other)

  • 颜色:<color>
  • 图片:<image>
  • 位置:<position>

     

    而javascrip多种多样的, 例如字符串、数字、布尔、数组、对象、Null、Undefined 这些是纯粹的数据类型, 没有经过封装.

     

    说到这里, 闲聊一下, javascript的难度和css对比, 没封装过的肯定要难一个数量级. css 2天就入门了, js可能要10天…

     

     

    <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>

JS函数动作分层结构详解及Document.getElementById 释义 js及cs数据类型区别 事件 函数 变量 script标签 var function的更多相关文章

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

    [TOC] 1.Nuxt目录结构详解 Nuxt项目文件目录结构 |-- .nuxt // Nuxt自动生成,临时的用于编辑的文件,build |-- assets // 用于组织未编译的静态资源入LE ...

  2. JS中的event 对象详解

    JS中的event 对象详解   JS的event对象 Event属性和方法:1. type:事件的类型,如onlick中的click:2. srcElement/target:事件源,就是发生事件的 ...

  3. web标准 浏览器介绍 开发工具介绍 HTML介绍 HTML颜色介绍 规范 HTML结构详解 {前端之前端初识}

    前端之前端初识   前端初识 本节目录 一 web标准 二 浏览器介绍 三 开发工具介绍 四 HTML介绍 五 HTML颜色介绍 六 规范 七 HTML结构详解 一 web标准 web准备介绍: 1. ...

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

    js中中括号,大括号使用详解 一.总结 一句话总结:{ } 是一个对象,[ ] 是一个数组 1.js大括号{}表示什么意思? 对象 { } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或 ...

  5. PHP函数call_user_func和call_user_func_array详解

    今天在群里面,有个叫lewis的在问call_user_func_array的用法,因为之前一直没有用过,也不能说什么,于是看一下手册,发现是这么写的: call_user_func_array (P ...

  6. PHP扩展代码结构详解

    PHP扩展代码结构详解: 这个是继:使用ext_skel和phpize构建php5扩展  内容 (拆分出来) Zend_API:深入_PHP_内核:http://cn2.php.net/manual/ ...

  7. ext.js的mvc开发模式详解

    ext.js的mvc开发模式详解和环境配置 在JS的开发过程中,大规模的JS脚本难以组织和维护,这一直是困扰前端开发人员的头等问题.Extjs为了解决这种问题,在Extjs 4.x版本中引入了MVC开 ...

  8. vue 文件目录结构详解

    vue 文件目录结构详解 本篇文章主要介绍了vue 文件目录结构详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 项目简介 基于 vue.js 的前端开发环境,用于前后 ...

  9. 微信JS接口汇总及使用详解

    这篇文章主要介绍了微信JS接口汇总及使用详解,十分的全面.详尽,包含分享到朋友圈,分享给朋友,分享到QQ,拍照或从手机相册中选图,识别音频并返回识别结果,使用微信内置地图查看位置等接口,有需要的小伙伴 ...

随机推荐

  1. 题目1018:统计同成绩学生人数(hash简单应用)

    问题来源 http://ac.jobdu.com/problem.php?pid=1018 问题描述 给你n位同学的成绩,问获得某一成绩的学生有多少位. 问题分析 初见此题,有人会想到先将所有成绩存入 ...

  2. Linux的vim和vi编辑器

    vim和vi的基本介绍 所有的Linux 系统都会内建vi 文本编辑器. Vim 具有程序编辑的能力,可以看做是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计. 代码补完.编译及错 ...

  3. [Ruby]Unzipping a file using rubyzip

    link: http://www.markhneedham.com/blog/2008/10/02/ruby-unzipping-a-file-using-rubyzip/ require 'ruby ...

  4. vue嵌套路由-query传递参数(三)

    在嵌套路由中我们经常会遇到父路由向子路由里面传递参数,传递参数有两种方法,通过 query 或者 params index.html <div id="app"> &l ...

  5. php 多字节编码转换

    PHP 支持的编码 mb_convert_encoding — 转换字符的编码 string mb_convert_encoding ( string $str , string $to_encodi ...

  6. 为什么一定要学Go语言

    Go语言是谷歌2009发布的第二款开源编程语言.Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全.支持并行进程. 为什么要选择学习Go ...

  7. Versions maven plugin 修改版本

    使用versions maven plugin插件,批量修改项目各模块的版本号,灵活推进或回退版本,避免主干每次更新代码,立即对所有分支产生影响. https://blog.csdn.net/sunz ...

  8. node 基础小结

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. 关于在真实物理机器上用cloudermanger或ambari搭建大数据集群注意事项总结、经验和感悟心得(图文详解)

    写在前面的话 (1) 最近一段时间,因担任我团队实验室的大数据环境集群真实物理机器工作,至此,本人秉持负责.认真和细心的态度,先分别在虚拟机上模拟搭建ambari(基于CentOS6.5版本)和clo ...

  10. fastjson反序列化多层嵌套泛型类与java中的Type类型

    在使用springmvc时,我们通常会定义类似这样的通用类与前端进行交互,以便于前端可以做一些统一的处理: public class Result<T> { private int ret ...