当前位置:  编程技术>WEB前端
本页文章导读:
    ▪元素的classList属性怎么用      查看HTML元素的classList元素将返回类型为DOMTokenList的对象,所以我们要研究的是该对象的属性和方法。该类型的对象描述了一个用空格分隔的字符串数组,数组的每一项代表该元素的一个类名.........
    ▪Jquery真的不难~第八回 JS的闭包问题      回到目录百度百科中对闭包的定义:  闭包是可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定.........
    ▪Ubuntu11.10+ruby on rails 3+rspec+autotest+spork配置      step1:    创建新的项目,不包含默认测试文件(-T)     $ rails new sampleapp -T step2:     $ cd sampleapp step3:     修改Gemfile     添加 gem 'therubyracer.........

[1]元素的classList属性怎么用
    来源:    发布时间: 2013-11-06

查看HTML元素的classList元素将返回类型为DOMTokenList的对象,所以我们要研究的是该对象的属性和方法。

该类型的对象描述了一个用空格分隔的字符串数组,数组的每一项代表该元素的一个类名。HTMLElement.classList, HTMLLinkElement.relList, HTMLAnchorElement.relList or HTMLAreaElement.relList等方法都会返回该对象。

属性:

  • length -- 只读属性,对于classList,它指示有多少个类名

方法:

  • item(idx) -- 返回指定位置的项。如果未找到,则返回undefined,某些版本的浏览器返回null;
  • contains(token) -- 如果数组中包含指定的元素,返回true,否则返回false;对于classList,该方法相当于jQuery中的hasClass方法;
  • add(token) -- 向数组中添加元素。对于classList该方法相当于jQuery中的addClass
  • remove(token) -- 移除指定的元素。对于classList该方法相当于jQuery中的removeClass方法;
  • toggle(token) -- 切换某个元素。对于classList该方法相当于jQuery中的toggleClass方法;

简单的案例

var elemClassList = document.querySelector('#Bubby').classList,
classNum = elemClassList.length;
elemClassList.add('sexy');
elemClassList.remove('sexy');
elemClassList.toggle('fat');
if( elemClassList.contains('nipple') ){
console.info('OH YEAH');
}

模拟一下jQuery的addClass和removeClass

var Sys = {
addClass: function (elem, value) {
// 如果没有传递元素
if (!elem) return;
var arr = [];
// 如果只有一个元素
if (elem.nodeType) arr.push(elem);
// 如果传递了HTML元素集合,如NodeList或HTMLCollection
if (elem.length) {
for (var j = 0, ln = elem.length; j < ln; j++) {
// 只处理HTML标签元素
if (elem[j].nodeType) arr.push(elem[j]);
}
}
// 为每一个元素添加类名
for (var i = 0, len = arr.length; i < len; i++) {
var elem = arr[i];
if (elem.nodeType === 1 && elem.className.indexOf(value) < 0 ) {
elem.classList.add(value);
}
}
},
removeClass: function (elem, value) {
var arr = [];
if (!elem) return;
// 如果只传递一个HTML元素
if (elem.nodeType) arr.push(elem);
// 如果传递了HTML元素集合
if (elem.length) {
for (var j = 0, ln = elem.length; j < ln; j++) {
// 只处理HTML标签元素
if (elem[j].nodeType) arr.push(elem[j]);
}
}
for (var z = 0, len = arr.length; z < len; z++) {
var elem = arr[z];
if (elem.nodeType === 1 && elem.className.indexOf() >= 0) {
elem.classList.remove(value);
}
}
}
};

 

本文链接


    
[2]Jquery真的不难~第八回 JS的闭包问题
    来源:    发布时间: 2013-11-06

回到目录

百度百科中对闭包的定义:

  闭包是可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义。“闭包” 一词来源于以下两者的结合:要执行的代码块(由于自由变量被包含在代码块中,这些自由变量以及它们引用的对象没有被释放)和为自由变量提供绑定的计算环境 (作用域)。在 Scala、Scheme、Common Lisp、Smalltalk、Groovy、JavaScript、Ruby 和 Python,objective c 等语言中都能找到对闭包不同程度的支持。

占岭对闭包的定义:

   对于函数A,它内部有子函数B,A函数的返回值为函数B,当A函数的实例被建立之后,由于还存在着对函数B的引用,所以函数B中的值还会存在于内存中,这时函数B的这种浪费内存的行为我们称为闭包!

在理解闭包之前,我们先来看一下JS变量的作用域吧:

所为使用域就是一个对象或者变量的有效性的范围,下面的代码中详细的说明了这一点

    //变量的作用域
function bobo() {
var a = 1; //只在bobo函数体中有效
b = 1; //声明了一个全局变量,在整个<script>块中有效
function boboSub() { //声明一个函数,它只在bobo函数中有效
var c = 1; //只有boboSub函数声中有效
c = c + a; //子函数中可以使用上级函数的变量
}
}

通过一个代码来理解一下闭包吧:

这个例子中有变量i,它是父函数a中的一个变量,它对子函数b是可见的,在函数b中对它进行累加操作,最后函数a将函数b返回,而由于函数a对函数b

存在着地址上的引用,所以,当函数a没有被释放时,函数b也不会被释放,这虽然是不提供的,但在某种情况下是完成一些需求的最佳方式。即浪费的不一定是不好的。

   <script>
function a() {
var i = 0;
function b() {
alert(++i);
}
return b;
}
var c = a();
c();
</script>

它的结果不是0,而是1,这就是闭合的作用,事实上闭合将局部变量B提升了,默认情况下,我们先把直接访问到函数A的内部函数B,所以闭包还有一个提升变量级别的作用。

  好了,写到这里,Jquery真的不难系列也就写完了,匆匆忙忙,时间不知不觉过的很快,在这个系列中,我充分投入了进入,可能已经不是代码这么简单了,可能在写作的时候带有一些感情的色彩,这可能叫身临其境吧,又或者我走火入魔了,以至于我已经失眠3天了,呵呵!

祝大家早日学有所成吧,好好工作,好好生活吧!就到这吧。

回到目录

本文链接


    
[3]Ubuntu11.10+ruby on rails 3+rspec+autotest+spork配置
    来源: 互联网  发布时间: 2013-11-06
step1:    创建新的项目,不包含默认测试文件(-T)
    $ rails new sampleapp -T

step2:
    $ cd sampleapp

step3:
    修改Gemfile
    添加
    gem 'therubyracer'
    group :development do
    gem 'rspec-rails'
    end
    group :test do
    gem 'rspec'
    gem 'webrat'
    end

step4:
    $ bundle install

step5:    安装rspec
    $ rails generate rspec:install

step6:    新建几个页面,【并删掉部分测试(可略过)】
    $ rails generate controller Pages home contact
    $ rm -rf spec/views
    $ rm -rf spec/helpers

step7: 安装autotest(http://automate-everything.com/2009/08/gnome-and-autospec-notifications/#comments)
    
    $sudo gem install ZenTest
    【#可能在安装的时候提示gem版本太低,需要~>1.8,需要升级,以下给出升级方法(直接gem update --system是不行的):
    #$sudo gem install rubygems-update -v 1.8.24(我安装时的最新版本)
    #$sudo update_rubygems
    #$sudo gem update --system
    #】
    $sudo gem install redgreen
    $sudo apt-get install libnotify-bin
step8:
    新建文件~/.autotest,内容如下
 
   #!/bin/ruby
    require 'redgreen' #若为ubuntu11.*需要去掉此行
    require 'autotest/timestamp'
    module Autotest::GnomeNotify
        def self.notify title, msg, img
            system "notify-send '#{title}' '#{msg}' -i #{img} -t 3000"
        end
        Autotest.add_hook :ran_command do |at|
            image_root = "~/.autotest_images"
            results = [at.results].flatten.join("\n")
            results.gsub!(/\\e\[\d+m/,'')
            output = results.slice(/(\d+)\sexamples?,\s(\d+)\sfailures?(,\s(\d+)\spending?|)/)
            full_sentence, green, failures, garbage, pending = $~.to_a.map(&:to_i)
            if output
                if failures > 0
                    notify "FAIL", "#{output}", "#{image_root}/fail.png"
                elsif pending > 0
                    notify "Pending", "#{output}", "#{image_root}/pending.png"
                else
                    notify "Pass", "#{output}", "#{image_root}/pass.png"
                end
            end
        end
    end


step9:
    下载autotest_images.zip,将.autotest_images放到放到~/下,即~/.autotest_images/
    下载链接:http://automate-everything.com/wp-content/uploads/2009/08/autotest_images.zip

step10:享受成果。
$cd sampleapp  #若已在此目录,略过
$autotest

step11:有关spork配置察看链接http://blog.csdn.net/emerald0106/article/details/7251332

注意启动spork时,spork为小写,即

$spork

作者:here1009 发表于2013-1-18 1:33:33 原文链接
阅读:144 评论:0 查看评论

    
最新技术文章:
▪css white-space:nowrap属性用法(可以强制文字不...
▪IE里button设置border:none属性无效解决方法
▪border:none与border:0使用区别
▪html清除浮动的6种方法示例
▪三个不常见的 HTML5 实用新特性简介
▪css代码优化的12个技巧
▪低版本IE正常运行HTML5+CSS3网站的3种解决方案
▪CSS Hack大全-教你如何区分出IE6-IE10、FireFox、Chr...
▪ie6,ie7,ie8完美支持position:fixed的终极解决方案
▪小技巧处理div内容溢出
▪html小技巧之td,div标签里内容不换行
▪纯CSS实现鼠标放上去改变文字内容
▪li中插入img图片间有空隙的解决方案
▪CSS3中Transition属性详解以及示例分享
▪父div高度不能自适应子div高度的解决方案
▪告别AJAX实现无刷新提交表单
▪从零学CSS系列之文本属性
▪HTML 标签
▪CSS3+Js实现响应式导航条
▪CSS3实例分享之多重背景的实现(Multiple background...
▪用css截取字符的几种方法详解(css排版隐藏溢...
▪页面遮罩层,并且阻止页面body滚动。bootstrap...
▪CSS可以做的几个令你叹为观止的实例分享
▪详细分析css float 属性以及position:absolute 的区...
▪IE6/IE7/IE8/IE9中tbody的innerHTML不能赋值的完美解...
▪CSS小例子(只显示下划线的文本框,像文字一...
▪可以给img元素设置背景图
▪不通过JavaScript实现的自动滚动视差效果
▪div+CSS 兼容小摘
▪CSS的inherit与auto使用分析
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3