选项卡,封装的JS
- 格式:doc
- 大小:86.00 KB
- 文档页数:15
js封装方法JavaScript是一种广泛使用的脚本语言,用于开发Web应用程序。
它是一种高级编程语言,具有面向对象的特征,使得编写代码变得更加简单和直观。
在JavaScript中,封装是一种重要的编程技术,它可以帮助我们更好地组织代码和抽象出通用的功能。
封装是一种将代码和数据隐藏在对象中的技术。
它的主要目的是将代码和数据封装在一个单独的单元中,以便其他代码无法直接访问它们。
这样可以有效地保护代码和数据的安全性,并且可以使代码更加模块化和易于维护。
在JavaScript中,我们可以使用函数来实现封装。
函数是一种可重用的代码块,它可以接受参数并返回值。
我们可以将函数定义为一个对象的方法,并在该对象的作用域内使用它。
这样,我们就可以将函数的代码和数据封装在对象中,以便其他代码无法直接访问它们。
下面是一个简单的JavaScript对象,它使用封装技术来实现一个计算器:```var Calculator = {result: 0,add: function(num) {this.result += num;},subtract: function(num) {this.result -= num;},multiply: function(num) {this.result *= num;},divide: function(num) {this.result /= num;}};```在这个例子中,我们定义了一个名为Calculator的对象,并在其中定义了四个方法:add、subtract、multiply和divide。
这些方法用于执行加法、减法、乘法和除法操作,并将结果存储在对象的result属性中。
这个对象的作用域内包含了所有的方法和属性,因此其他代码无法直接访问它们。
这样,我们就成功地将计算器的功能封装在一个对象中。
在实际的开发中,封装技术通常用于创建可重用的代码库。
我们可以将一些通用的功能封装在一个对象或函数中,并将其用作其他应用程序的组件。
js之选项卡(tag标签)⽬标效果:点击不同按钮显⽰不同内容代码如下<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title><style>input{background-color: white}.click{background-color: darkcyan}div{width: 200px;height: 200px;background-color: antiquewhite;display: none}</style><script type="text/javascript">window.onload=function (){var ainput = document.getElementsByTagName('input');//获取所有input标签var adiv = document.getElementsByTagName('div');//获取所有div标签var i = 0for (i=0;i<ainput.length;i++){ainput[i].index = iainput[i].onclick=function ()//循环点击input标签{for(i=0;i<ainput.length;i++)//循环清除input标签和div标签样式某些属性{ainput[i].className='';adiv[i].style.display='none';}// alert('点击'+this.index+'个按钮');adiv[this.index].style.display='block';//当前input所对应的显⽰divthis.className='click';}}}</script></head><body><input type="button" value="1"><input type="button" value="2"><div>000</div><div>111</div></body></html>。
ElementUI是一套基于Vue.js的UI框架,具有丰富的组件库,其中el-tabs组件是一个非常常用的选项卡组件,可以用于在页面上展示多个选项卡。
在使用el-tabs组件时,除了功能性的需求外,样式的美观也是非常重要的。
本文将对el-tabs组件的样式进行详细分析,并提出一些优化建议,以供开发者参考。
1. 基本结构及样式说明el-tabs组件是由选项卡标签和对应的内容面板组成。
选项卡标签通常位于一个水平的导航条上,每个选项卡标签被点击时,相应的内容面板会显示出来。
el-tabs组件的样式主要涉及到选项卡标签和内容面板的样式设计。
2. 选项卡标签的样式选项卡标签的样式对于整个el-tabs组件的美观度至关重要。
在设计选项卡标签的样式时,需要考虑以下几个方面:- 选项卡标签的宽度和高度:选项卡标签的宽度和高度应该是统一的,以保证整个选项卡组件的视觉效果整齐美观。
- 选项卡标签的边框和背景色:选项卡标签的边框和背景色也需要统一设计,以使整个选项卡组件显得连贯和一致。
- 选项卡标签的激活状态:选项卡标签在被点击后应该有明显的表现,比如改变背景颜色、边框样式或文字颜色等。
3. 内容面板的样式内容面板的样式设计也是el-tabs组件样式设计中的重要部分。
在设计内容面板的样式时,需要考虑以下几个方面:- 内容面板的边框和背景色:内容面板的边框和背景色需要与选项卡标签的样式保持一致,以保持整体的美观性。
- 内容面板的显示和隐藏:内容面板在被选中时应该有明显的切换效果,可以考虑添加过渡动画或渐变效果。
4. 样式优化建议在实际开发过程中,可以根据项目的实际需求对el-tabs组件的样式进行优化。
具体建议包括:- 考虑响应式设计:随着移动端设备的普及,响应式设计已成为前端开发的必备技能。
在设计el-tabs组件样式时,需要考虑不同屏幕尺寸下的显示效果,确保在不同设备上都能够呈现出良好的效果。
- 自定义样式:ElementUI提供了丰富的自定义样式选项,开发者可以通过覆盖默认样式或者自定义class的方式来实现个性化的样式设计。
js getoption函数js GetOption函数是一种在JavaScript中获取选项卡(Tab)组件中指定选项(Option)的方法。
这种函数在实现复杂选项卡组件时非常有用,可以方便地获取和操作选项卡中的选项。
下面我们将详细介绍JS GetOption函数的用法和应用场景。
1.JS GetOption函数简介JS GetOption函数通常位于JavaScript库中,用于简化选项卡组件的开发。
通过这个函数,我们可以根据选项卡的索引或名称来获取指定的选项。
获取到的选项可以用于后续的操作,如修改、删除等。
2.函数参数及作用JS GetOption函数接收两个参数:- tab:表示选项卡组件的实例。
可以通过创建一个Tab对象并传入相应的选项来获取。
- optionName:表示要获取的选项名称或索引。
如果是名称,则传入字符串;如果是索引,则传入数字。
例如,以下代码获取名为“example-option”的选项:```javascriptvar option = tab.getOption("example-option");```3.实例演示下面是一个简单的实例,演示如何使用JS GetOption函数获取选项卡中的选项:```html<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JS GetOption演示</title></head><body><tabbox id="tabBox"><tab name="选项1" selected="true"><option name="example-option" value="1">示例选项1</option></tab><tab name="选项2"><option name="example-option" value="2">示例选项2</option></tab></tabbox><script>var tabBox = document.getElementById("tabBox");var option = tabBox.getOption("example-option");console.log(option.value); // 输出:1</script></body></html>```4.应用场景及注意事项JS GetOption函数适用于需要频繁获取和操作选项卡组件中的选项的场景。
JS的几种封装方法1、构造函数封装构造函数是最常用的JS封装方法,它可以创建一个新的对象,并且可以给这个对象添加属性及方法。
以下为一个典型的构造函数:function Person(name, age) = name;this.age = age;this.sayName = functionconsole.log();}//实例化一个Personvar p1 = new Person('Bob', 30);p1.sayName(; //Bob//可以看到,我们声明了一个构造函数Person,它接收两个参数name和age,然后将它们赋值给this对象的属性,同时它还有一个sayName(方法,用来打印出名字。
2、闭包封装闭包封装是通过JavaScript提供的闭包机制来实现封装的,它将对象的属性和方法定义在一个函数内,并且返回一个匿名函数,即闭包,这个匿名函数将对象的属性和方法绑定到外部的对象上,从而实现封装。
以下是一个封装对象Person的示例:var Person = (function//私有属性和方法定义var name = '';var age = 0;//私有方法function setName(newName)name = newName;}function setAge(newAge)age = newAge;}//公有属性和方法return//公有属性publicName : name,publicAge : age,//公有方法setName : setName,setAge : setAge}})(;//实例化一个PersonPerson.setName('Bob');Person.setAge(30);console.log(Person.publicName); //Bobconsole.log(Person.publicAge); //30//可以看到,我们利用闭包机制将Person对象的私有属性和方法,同样也将公有属性和方法封装在一个函数中,返回一个匿名函数,用来封装Person对象。
使⽤uni-app开发微信⼩程序uni-app 开发微信⼩程序详见个⼈博客: (github.io⾸次加载较慢)前⾔9⽉份,开始开发微信⼩程序,也曾调研过wepy/mpvue,考虑到后期跨端的需求,最终选择使⽤了uni-app,本⽂主要介绍如何使⽤uni-app搭建⼩程序项⽬,以及⾃⼰对框架的补充,包括封装request接⼝,引⽤color-ui,动态设置底部tab页等,详情见下⽂uni-app 介绍(官⽹)uni-app 是⼀个使⽤ Vue.js开发所有前端应⽤的框架,开发者编写⼀套代码,可发布到iOS、Android、H5、以及各种⼩程序(微信/⽀付宝/百度/头条/QQ/钉钉)等多个平台。
即使不跨端,uni-app同时也是更好的⼩程序开发框架。
详见好处如图:我使⽤uni-app框架主要⽤来开发微信⼩程序,我使⽤过程中感觉的好处是:uni-app框架使⽤的开发⼯具HBuilderX ,HBuilderX内置相关环境,开箱即⽤,⽆需配置 nodejs,需要什么插件可直接下载,测试、打包、发布特别⽅便。
uni-app 采⽤Vue.js语法,基本⽀持vue⼤部分语法(vue的动态组件component不⽀持)。
PC端使⽤vue封装的⼀些js⽅法,以及建构思想,可直接移植到uni-app中,⽐如:本⼈pc 项⽬中api接⼝js⽂件,可直接复制到⼩程序框架api⽂件夹中(PS:api⽂件夹维护后端请求路径)uni-app周边⽣态丰富,可⽤的组件特别多,也可使⽤vue语法⾃⼰封装⼀些组件。
开发⼯具(HBuilderX)HBuilderX: ;HBuilderX是通⽤的前端开发⼯具,但为uni-app做了特别强化。
HBuilderX提供了⼀些插件,可直接下载安装,具体如下图:⼯具 > 插件安装项⽬结构⾸先我们通过HBuilderx > ⽂件 > 项⽬,选择uni-app项⽬,模板我选择的是默认模板,当然你也可选择其他模板,接着确认创建,如果你选择的是默认模板,此时你的⽂件夹应该如下图:接着我根据⾃⼰的项⽬需求,以及为了与vue的pc项⽬结构保持⼀下,分别添加如下⽂件夹具体代码可参考GitHub:+-- api -- (页⾯接⼝路径)| +-- login.js| +-- tools.js+-- colorui -- (color-ui 样式)+-- common -- (通⽤的js⽅法)+-- components -- (通⽤的组件)+-- pages -- (主要页⾯)+-- services -- (通⽤的服务)| +-- auth.service.js -- (主要封装了⼀些保存⽤户的token⽅法)| +-- config.service.js -- (存放全局通⽤的变量)| +-- request.service.js -- (封装了uni.request的⽅法)+-- static -- (静态⽂件)+-- unpackage -- (在⼩程序模拟器运⾏的⽂件)+-- App.vue -- (应⽤配置,⽤来配置App全局样式以及监听 )+-- main.js -- ( Vue初始化⼊⼝⽂件)+-- manifest.json -- (配置应⽤名称、appid、logo、版本等打包信息)+-- pages.json -- (配置页⾯路由、导航条、选项卡等页⾯类信息)+-- uni.scss -- (这⾥是uni-app内置的常⽤样式变量)主要⽂件介绍:api⽂件夹中存放的是各个页⾯的请求路径,引⼊request.service.js暴露出来的api,colorui使⽤了color-ui样式,个⼈认为样式⾮常好看,⾮常感谢,详情:common存放全局通⽤的js⽅法components存放全局组件,包括uni-ui以及⾃⼰封装的组件pages主要页⾯,其中pages⽂件夹中index⽂件中可布局底部的tab页⾯,通过v-if判断显⽰不同的tab页services通⽤的服务⽂件(我不知道这种描述是否准确,原来⽤的Angular4,Angular中服务概念对我有⼀定的影响)auth.service.js通过使⽤uni.setStorageSync简单封装了⼀些保存⽤户的token⽅法config.service.js保存全局的变量例如:apiUrl请求接⼝的IP, storage_key是token的键值,全局引⽤的变量都可定义在这个⽂件内,后期如果需要改动,只需要修改这个⽂件中对⽤的值request.service.js使⽤Promise对uni.request进⾏封装,将get、post、delete请求⽅式暴露出来,在api⽂件夹中引⽤这个⽂件即可使⽤get、post、delete⽅法static静态⽂件,我主要⽤来放图⽚unpackage (在⼩程序模拟器运⾏的⽂件)App应⽤配置,⽤来配置App全局样式以及监听如何⾃定义底部tab导航栏本⼈项⽬中需要根据不同的⾓⾊显⽰不同的底图tab页,那么原来在pages.json设置的tab页,不够灵活,也不好扩展,因此⾃定义tab页,具体如下在pages⽂件夹中,新建⼀个index⽂件夹并创建⼀个index.vue页⾯,在这个页⾯可布局底部tab, 根据点击不同的tab显⽰对应的tab页,如图:注意:如果每个tab点击是切换不同的view,这个就相当于单页应⽤了,当页⾯⽐较复杂时,切换过程可能存在卡。
前端开发中的Web组件开发和封装技术随着互联网的蓬勃发展,Web前端开发在近几年也日渐火热,越来越多的开发者涌入这一领域。
在Web前端开发中,组件开发和封装技术是至关重要的,它可以提高代码的复用性和可维护性,减少开发成本,提高开发效率。
在本文中,将探讨前端开发中的Web组件开发和封装技术。
一、组件开发的概念与意义Web组件是指一种独立的、可重用的、包含各自业务逻辑和样式的模块。
组件是Web应用的基本构建单元,可以将应用划分为不同的功能和区域,每个组件负责自己的逻辑和样式。
组件化开发可以将代码分隔为更小的、独立的模块,使得代码结构更加清晰,易于理解和维护。
组件开发的意义在于提高了代码的复用性和可维护性。
使用组件开发的方式,可以将功能相似的代码封装在一个组件中,需要使用该功能的时候直接调用组件即可,不需要重复编写代码。
同时,组件的独立性也意味着可以单独对某个组件进行修改和维护,而不会影响其他组件。
二、组件开发的常用技术1. HTML和CSS:HTML和CSS是组件开发中必不可少的两门技术。
HTML 用于定义组件的结构,CSS用于定义组件的样式。
通过合理的HTML和CSS的编写,可以使组件具有清晰的结构和良好的样式。
2. JavaScript:JavaScript是组件开发中最为核心的技术,通过JavaScript可以实现组件的交互逻辑。
比如,可以通过JavaScript实现点击按钮弹出对话框的功能。
同时,JavaScript还可以通过操作DOM元素实现组件的动态更新。
3. 模块化开发:模块化开发是组件开发的重要手段之一。
在前端开发中,常常使用模块化开发的框架,如RequireJS、Webpack等,来将JavaScript代码按照模块的方式进行组织和管理,使得代码结构更加清晰和易于维护。
4. 组件库:组件库是一种提供一系列组件的开发工具,开发者可以直接使用组件库中的组件,无需从零开始编写每一个组件。
js design()用法【最新版】目录1.介绍 JavaScript 设计模式2.说明 JavaScript 设计模式的用途3.详述 JavaScript 设计模式的使用方法4.举例说明如何使用 JavaScript 设计模式正文一、介绍 JavaScript 设计模式JavaScript 设计模式是一种编程范式,用于解决 JavaScript 应用程序中的设计问题和模式。
JavaScript 设计模式可以帮助开发者编写更易于维护、可重用和可扩展的代码。
二、JavaScript 设计模式的用途JavaScript 设计模式主要用于以下方面:1.代码重用:通过封装常用的功能,可以实现代码的复用,减少重复编写代码的工作量。
2.模块化:通过设计模式,可以将程序划分为独立的模块,提高代码的可读性和可维护性。
3.提高性能:设计模式可以帮助优化代码性能,提高程序的运行效率。
4.提高代码的可扩展性:通过设计模式,可以预留扩展接口,方便后期功能的扩展。
三、详述 JavaScript 设计模式的使用方法要使用 JavaScript 设计模式,需要遵循以下步骤:1.确定设计问题:首先要明确需要解决的问题,分析代码的结构和功能需求。
2.选择合适的设计模式:根据设计问题,选择合适的设计模式。
例如,如果需要实现代码复用,可以选择工厂模式;如果需要实现模块化,可以选择模块模式等。
3.编写设计模式代码:根据所选的设计模式,编写相应的代码。
4.测试和优化:对编写的设计模式代码进行测试,确保功能正确,并对代码进行优化,提高性能。
四、举例说明如何使用 JavaScript 设计模式以工厂模式为例,介绍一下如何使用 JavaScript 设计模式:1.确定设计问题:假设需要创建不同类型的图形,如矩形、圆形等,需要解决图形的创建问题。
2.选择合适的设计模式:根据问题,选择工厂模式。
js中的window对象的用法在JavaScript中,window对象是最高级的对象之一,代表当前浏览器窗口或选项卡。
它提供了一系列属性和方法,用于操作和控制浏览器窗口或选项卡。
window对象的最基本的用法之一是获取和设置窗口的属性。
例如,可以使用window.innerWidth和window.innerHeight来获取窗口的宽度和高度,可以使用window.outerWidth和window.outerHeight来获取包括浏览器菜单栏和工具栏在内的浏览器窗口的宽度和高度。
通过修改这些属性的值,可以动态调整窗口大小。
除了窗口属性,window对象还提供了一些方法来操作窗口行为。
例如,可以使用window.open(方法打开一个新窗口或新选项卡,可以使用window.close(方法关闭当前窗口或选项卡。
window对象还包含了一些与浏览器导航相关的方法。
例如,可以使用window.location.assign(方法来加载新的URL,可以使用window.history对象来访问浏览器的历史记录并进行前进和后退操作。
window对象还提供了一些处理用户输入和输出的方法。
例如,可以使用window.alert(方法显示一个带有消息的警告框,可以使用window.prompt(方法显示一个输入框,用户可以在其中输入内容,还可以使用window.confirm(方法显示一个确认框,用户可以选择是或否。
另外,window对象还有一些与定时器和事件相关的方法。
例如,可以使用window.setTimeout(方法设置一个定时器,让代码在指定的时间间隔后执行,可以使用window.setInterval(方法设置一个周期性定时器,让代码在每个时间间隔内执行,可以使用window.clearTimeout(和window.clearInterval(方法取消已设置的定时器。
除了上述方法和属性,window对象还有很多其他功能。
js文件使用方法一、什么是js文件。
1.1 js文件全称为JavaScript文件。
这可是个相当厉害的东西呢,就像是魔法盒子一样。
JavaScript是一种脚本语言,在网页开发里那可是大明星。
1.2 它可以让网页变得生动有趣,比如说实现各种交互效果。
要是没有它,网页就会像一潭死水,只能干巴巴地展示些静态内容。
二、js文件的使用场合。
2.1 在网页设计里,那是处处都能见到它的身影。
比如说做个炫酷的导航栏,鼠标一放上去就有各种特效,这就是js文件的功劳。
它就像个幕后的魔术师,悄无声息地把平凡的网页变得超酷。
2.2 还有那些表单验证,像咱们注册账号的时候,输入格式不对立马就有提示,这也是js文件在起作用呢。
它就像个严格的小管家,把不符合要求的输入都给揪出来。
2.3 动态网页的创建更是离不开它。
如果把网页比作一个舞台,那js文件就是那个编排精彩节目的导演,让舞台上的元素动起来、变起来。
三、如何使用js文件。
3.1 首先得创建一个js文件。
这就像盖房子要先打地基一样。
你可以用任何文本编辑器,简单得很,就像写普通的文字一样。
不过要记住把文件保存成.js的格式,这可是它的身份证,可不能弄错了。
3.2 然后就是编写代码了。
这就有点像厨师做菜,各种原料(代码语句)按照一定的配方(语法规则)组合起来。
比如说要让一个按钮点击后弹出个小窗口,那就得写相应的代码。
这里面的语法规则虽然有点小复杂,但只要下点功夫,就像铁杵磨成针一样,肯定能掌握。
3.3 接下来就是把js文件引入到HTML文件里。
这就像是把新做好的零件安装到机器上。
有两种常见的方法,一种是直接在HTML文件里用script标签把js代码写进去,不过这种方法适合代码比较少的时候;另一种就是像请外援一样,通过script标签的src属性引入外部的js文件,这在代码比较多的时候就很方便了。
四、注意事项。
4.1 代码的规范就像做人的规矩一样重要。
变量名要起得有意义,不能像乱码一样让人摸不着头脑。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>井底的蛙</title><script type="text/javascript">/*选项卡封装by 井底的蛙2008-2-4*/opCard = function(){this.bind = new Array();this.index = 0; //默认显示哪个选项卡,从0开始this.style = new Array(); //["","",""]this.overStyle = false; //选项是否有over, out变换样式事件,样式为this.style[2] this.overChange = false; //内容是否用over, out直接激活this.menu = false; //菜单类型this.nesting = [false,false,"",""]; //是否嵌套,后面2个参数是指定menu,info的子集深度所用idthis.auto = [false, 1000]; //自动滚动[true,2000]this.timerID = null; //自动播放的this.menutimerID = null; //菜单延时的this.creat = function(func){var _arrMenu = document.getElementById(this.bind[0]).getElementsByTagName(this.bind[1]);var _arrInfo = document.getElementById(this.bind[2]).getElementsByTagName(this.bind[3]);var my = this, i;var argLen = arguments.length;var arrM = new Array();if(this.nesting[0] || this.nesting[1]) // 有选项卡嵌套{ // 过滤出需要的数据var arrMenu = this.nesting[0]?getChilds(_arrMenu,this.bind[0],2):_arrMenu;var arrInfo = this.nesting[1]?getChilds(_arrInfo,this.bind[2],3):_arrInfo;}else{var arrMenu = _arrMenu;var arrInfo = _arrInfo;}var l = arrMenu.length;if(l!=arrInfo.length){alert("菜单和内容必须拥有相同的数量\n如果需要,你可以放一个空的在那占位。
")}// 修正if(this.menu){this.auto=false;this.overChange=true;} //如果是菜单,则没有自动运行,有over, out直接激活// 循环添加各个事件等for(i=0;i<l;i++){arrMenu[i].cName = arrMenu[i].className;arrMenu[i].className = (i!=this.index || this.menu)?getClass(arrMenu[i],this.style[0]):getClass(arrMenu[i],this.style[1]); //加载样式,菜单的话统一样式if(arrMenu[i].getAttribute("skip")) // 需要跳过的容器{if(this.overStyle || this.overChange) // 有over, out 改变样式或者激活{arrMenu[i].onmouseover = function(){changeTitle(this, 2);autoStop(this, 0);}arrMenu[i].onmouseout = function(){changeTitle(this, 0);autoStop(this, 1);}}arrMenu[i].onclick = function(){if(argLen==1){func()}}arrInfo[i].style.display = "none";continue;}if(i!=this.index || this.menu){arrInfo[i].style.display="none"};//隐藏初始化,菜单的话全部隐藏arrMenu[i].index = i; //记录自己激活值[序号]arrInfo[i].index = i;if(this.overChange) //有鼠标over, out事件{arrMenu[i].onmouseover = function(){changeOption(this);my.menu?changeMenu(1):autoStop(this, 0);}arrMenu[i].onmouseout = function(){changeOption(this);my.menu?changeMenu(0):autoStop(this, 1);}}else //onclick触发{arrMenu[i].onclick = function(){changeOption(this);autoStop(this, 0);if(argLen==1){func()}}if(this.overStyle) // 有over, out 改变样式{arrMenu[i].onmouseover = function(){changeTitle(this, 2);autoStop(this, 0);}arrMenu[i].onmouseout = function(){changeTitle(this, 0);autoStop(this, 1);}}else // 没有over, out 改变样式{if(this.auto[0]) // 有自动运行{arrMenu[i].onmouseover = function(){autoStop(this, 0);}arrMenu[i].onmouseout = function(){autoStop(this, 1);}}}}if(this.auto[0] || this.menu) //arrinfo 控制自动播放{arrInfo[i].onmouseover = function(){my.menu?changeMenu(1):autoStop(this, 0);}arrInfo[i].onmouseout = function(){my.menu?changeMenu(0):autoStop(this, 1);}}} //for结束if(this.auto[0]){this.timerID = setTimeout(autoMove,this.auto[1])}// 自动播放function autoMove(){var n;n = my.index + 1;if(n==l){n=0};while(arrMenu[n].getAttribute("skip")) // 需要跳过的容器{n += 1;if(n==l){n=0};}changeOption(arrMenu[n]);my.timerID = setTimeout(autoMove,my.auto[1]);}// onmouseover时,自动播放停止。
num:0为over,1为out。
obj暂时无用。
-_-!!function autoStop(obj, num){if(!my.auto[0]){return;}//if(obj.index==my.index)num == 0 ? clearTimeout(my.timerID) : my.timerID = setTimeout(autoMove,my.auto[1]);}// 改变选项卡function changeOption(obj){arrMenu[my.index].className = getClass(arrMenu[my.index],my.style[0]); //修改旧内容arrInfo[my.index].style.display = "none"; //隐藏旧内容obj.className = getClass(obj,my.style[1]); //修改为新样式arrInfo[obj.index].style.display = ""; //显示新内容my.index = obj.index; //更新当前选择的index}/*只有onclick时,overStyle的onmouseover,onmouseout事件。
用来预激活obj:目标对象。
num:1为over,0为out*/function changeTitle(obj, num){if(!my.overStyle){return;};if(obj.index!=my.index){obj.className = getClass(obj,my.style[num])} }/*菜单类型时用obj:目标对象。
num:1为over,0为out*/function changeMenu(num){if(!my.menu){return;}num==0?my.menutimerID = setTimeout(menuClose,1000):clearTimeout(my.menutimerID)}//关闭菜单function menuClose(){arrInfo[my.index].style.display = "none";arrMenu[my.index].className = my.style[0];}// 得到className(防止将原有样式覆盖)function getClass(o, s){if(ame==""){return s}else{return ame + " " + s}}//嵌套情况下得到真正的子集function getChilds(arrObj, id, num){var depth = 0;var firstObj = my.nesting[num]==""?arrObj[0]:document.getElementById(my.nesting[num]); //得到第一个子集do //计算深度{if(firstObj.parentNode.getAttribute("id")==id){break}else{depth+=1}firstObj = firstObj.parentNode;}while(firstObj.tagName.toLowerCase()!="body") // body强制退出。