`
bellstar
  • 浏览: 150975 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

javascript总结(五)获取设置元素样式与监听元素事件

阅读更多

目录
(一)有关框架
(二)文件组织与代码组织
(三)JS与FLASH交互
(四)ajax局部刷新与RPC
(五)获取设置元素样式与监听元素事件
  (六)页面元素的创建调整与关联
(七)浏览器兼容性问题
(八)WEB软件的前端架构实践

获取与设置element的样式
一、class or style
      某些情况下只能设置style属性:
        1、属性值是一个变量,如动态设置宽高。
        2、为了兼容某些浏览器
      其他情况下,尽量用class,理由有:
  • 做CSS的人员,可以方便更改
  • class可以有一形象的名,使代码更易读
  • 要加一条样式设置或者做一些兼容性的HACK,比较方便
  • 业务逻辑与表现分离
  • class设置和移除更加方便,style则非常麻烦

二、doc声明与浏览器兼容性
        HTML文档头部的DOC声明与不同版本的浏览器都有可能影响到你获取或者设置的样式,对于这个问题,我非常烦恼,我的策略是GOOGLE别人的做法,然后一遍遍的测试。
三、 UI widget中的做法
        在UI widget的代码里面设置和获取元素样式,有两种做法,一种是每次从元素style属性上获当前值,然后设置。第二种是,由widget对象自己维护一个变量,变化此变量时同时变化元素样式。我倾向于第二种,理由如下
  • style属性值更易于被外部因素影响而被改变
  • 获取更加方便,style获取到的值可能还要做进一步的处理
  • 逻辑更清晰,更易于重构,如方便表现与逻辑分离、应用状态、观察者等设计模式

绑定函数到element事件的几种方式
这里讨论的是没有被封装成对象的页面元素的绑定,除非指明了是UI widget
一、绑定行为和响应函数都在页面上
        这是嵌入脚本满天飞时的做法,还经常有重复定义响应函数的行为,A TAB有一个save函数,过一会用户点击了B TAB,又有一个新的save出现,虽然也能用,但要面对这种状态,很无语。

二、把绑定行为和响应函数都在外部脚本中
        这是我改过头了的做法,我把响应函数根据业务逻辑放到不同类里面,然后把绑定也一个也不留的全部放到页面载入后或者AJAX的回调里面,但页面状态是变化的,要弄清楚当前处于什么状态,然后决定要绑哪些元素。结果是在绑定这件事情上一团乱麻。

三、根据不同场景来决定如何绑定
        这是目前的做法,感觉还可以。做法如下:
        1、在JS方法里面绑定的情况
        如果它是在页面中是比较独立的一块(从结构和内容上看),比如sidebar,那么把它的逻辑独立存放于一个独立脚本的类里面,绑定行为放在初始化方法里面。在页面载入或Ajax载入完后调用初始化方法。
        如果它是一个全站都要用到的UI WIDGET,比如TAB、textarea的输入提示,那么给容器一个class,在全站layout的初始化代码中和每个ajax载入页面的回调里查询到这些元素,然后调用相关的UI widget类初始化绑定和行为。目前感觉在每个ajax 回调里都要做查询绑定比较麻烦,考虑试试jQuery全局ajax设定来做这件事。
        如果它是在特定页面要用到的UI WIDGET,在特定页面的初始化方法里面初始化这个UI widget。

        2、在元素事件属性上绑定的情况
        如果这一个局部要绑定到的行为很多,而且它可能经常刷新,此时如果每次都查询这些元素进行绑定,也比较费时费力,所以直接把绑定写在元素事件属性上。
        如果绑定到元素事件响应函数的逻辑比较简单,只是一个行为,比如隐藏元素。或者顺序执行的两个行为,比如清空表单元素内容,并且重新focus。这些情况下,我是直接把JS代码写在事件属性上。但这里有一个前提是,这些代码很短,不影响到维护与阅读。
        非同于上面的情况,且响应函数逻辑有点复杂,此时把响应函数写在相关业务的类里面,然后绑定还是写在事件属性上。



分享到:
评论
3 楼 matin0728 2010-04-06  
绑定函数到element事件的几种方式

应该还有另外一种方法,即使用js 直接产生节点并绑定事件,然后再附加到文档中,不一定是要获取html再使用selector来绑定,这样的效率上会高一些。
2 楼 crazy.j 2010-04-02  
currentStyle(IE) 和 defaultView(FF)
可以取得指定元素的style属性与css文件中定义的全部样式
1 楼 jessdy 2010-03-31  
等着看最后一章。

相关推荐

    JavaScript程序设计DOM操作元素样式共6页.pd

    6. **样式计算与样式对象**:除了内联样式,JavaScript还可以通过`window.getComputedStyle(element)`获取元素的计算样式,包括继承和CSS规则集中的样式。这在需要获取元素实际显示的样式时非常有用。 7. **CSS变量...

    Javascript获取相同CSS样式的元素

    标题中的“Javascript获取相同CSS样式的元素”是一个关于JavaScript编程的话题,主要涉及到如何在JavaScript中检索和操作具有相同CSS样式的HTML元素。在Web开发中,JavaScript常常用于动态地改变页面样式,或者根据...

    js监听滚动条改变导航元素位置和样式.rar

    这个名为"js监听滚动条改变导航元素位置和样式.rar"的压缩包文件提供了一个实例,教你如何利用原生JavaScript来实现这一功能,特别适合初学者学习。以下是关于这个主题的详细讲解。 首先,我们需要理解滚动条事件。...

    利用事件冒泡(Event Bubbling )获取鼠标下的元素属性

    1. **事件委托**:通过在父元素上设置事件监听器,可以捕获到子元素的事件,这样可以减少内存占用,因为只需要为父元素绑定一次事件处理函数,而不是每个子元素都绑定。 2. **动态元素的事件处理**:如果动态添加或...

    JS改变元素样式

    在JavaScript(JS)中改变元素样式是Web开发中常见的任务,它允许动态更新网页的外观和行为。通过JavaScript,我们可以响应用户的交互、响应数据变化或实现动态效果。本篇文章将详细探讨如何使用JavaScript来操作...

    JavaScript程序设计-DOM操作元素样式.docx

    在实际开发中,结合事件监听,如`click`事件,可以实现更复杂的交互效果,例如动态改变元素样式或者实现动画效果。 DOM操作元素样式是JavaScript和jQuery的重要部分,熟练掌握这些方法和技巧,能够提升网页的交互性...

    javascript为节点设置样式

    总结,JavaScript为节点设置样式和动态绑定事件是构建交互式网页的核心技术。熟练掌握这些技巧,可以让我们创建出丰富多样的用户体验。在实际开发中,结合HTML、CSS和JavaScript,我们可以构建出功能强大、视觉效果...

    html_javascript_监听滚动条demo

    // 在这里执行相应操作,如改变元素样式、显示隐藏内容等 } }); ``` 这种滚动事件的监听机制可以极大地增强网页的交互性,使得用户在浏览过程中有更流畅、自然的感受。在实际项目中,我们还可以结合CSS3动画和...

    javascript Css 样式

    通过JavaScript获取或设置CSS样式属性,可以实现精细的样式控制;使用CSS3的动画和过渡效果,再配合JavaScript的定时器,可以创建流畅的动态效果。 在文件名列表中提到的“02、03、01”可能对应的是教程或代码示例...

    jQuery使用之设置元素样式用法实例

    在本实例中,我们将深入探讨jQuery如何设置元素样式,包括添加、删除和动态切换CSS类,以及直接获取和设置样式属性。 1. **添加、删除CSS类** jQuery 提供了 `addClass()` 和 `removeClass()` 方法来为元素添加或...

    JavaScript学习总结

    2. 事件处理:JavaScript监听用户交互(如点击、滚动等),并通过CSS修改元素样式,实现交互反馈。 3. 动画效果:利用setTimeout和setInterval实现定时器,结合CSS改变元素位置、透明度等,创建动画效果。 4. CSS预...

    javascript操作DIV总结(弹出窗口篇)

    在JavaScript中,对DIV的操作主要包括获取元素、修改属性、添加和删除事件监听器,以及动态创建和销毁元素。对于弹出窗口,模态对话框和非模态弹出框的实现主要依赖于CSS和JavaScript的结合使用,浮动窗口则涉及到...

    关于javascript获取内联样式与嵌入式样式的实例

    JavaScript 获取内联样式与嵌入式样式是前端开发中常见的需求,这有助于...以上就是JavaScript获取内联样式与嵌入式样式的实例。了解并熟练运用这些方法,能帮助我们在前端开发中实现更灵活的样式控制,提升用户体验。

    jQuery/JS监听input输入框值变化实例

    同时,使用jQuery绑定了oninputpropertychange事件,显示了在输入过程中实时获取输入框长度,并根据输入值是否存在来改变其他元素的样式。 在介绍完各种监听方法后,文章还提供了一些兼容IE浏览器的JavaScript函数...

    JS操作DOM元素属性和方法大全

    9. **事件冒泡与事件捕获** - 事件冒泡:事件从最深的节点开始,逐级向上层节点传播事件。 - 事件捕获:事件从最外层节点开始,逐级向下层节点传播事件。 - `event.stopPropagation()`阻止事件冒泡,`event....

    JavaScript 第五章 JavaScript控制CSS

    例如,我们可以使用`document.getElementById`或`document.querySelector`方法获取特定的HTML元素,然后通过`.style`属性来改变其CSS样式。例如: ```javascript var element = document.getElementById('myElement...

    javascript层的属性事件写法

    此外,JavaScript还支持事件委托,即在父元素上设置事件监听器,处理子元素的事件。这种方式可以减少内存占用,提高性能。例如,一个列表中有很多项,而我们只想在点击某一项时执行操作,可以在列表容器上设置事件...

    CSS设置元素width=100%失效的一种解决方式(该元素的父元素为body).pdf

    总之,解决CSS设置元素`width: 100%`在`body`作为父元素时失效的方法包括:清除父元素(如`body`)的默认样式,使用JavaScript动态设置宽度,或者结合媒体查询实现响应式布局。每种方法都有其适用场景,开发者应根据...

    JavaScript动态设置div的样式的方法

    通过JavaScript设置事件监听器,可以让元素在用户交互下触发函数,从而实现动态效果。在上面的示例中,通过为按钮添加onclick事件监听器,当用户点击按钮时,相应的事件处理函数就会被调用,执行动态设置样式的效果...

    javascript全面总结

    4. **元素事件绑定与解除**:`document.captureEvents`和`document.all.xxx.detachEvent`允许对元素绑定或解除事件监听器,实现了事件的精确控制。 5. **下拉框操作**:`下拉框.options`属性提供了对下拉列表的访问...

Global site tag (gtag.js) - Google Analytics