`

积累Javascript的一些特殊用法

阅读更多
var browser = {
     ie: false,
     firefox: false,
     safari: false,
     opera: false, 
     version: -1
};
alert("browser.ie=" + browser.ie);

var tdIds = new Array('management','category','reserved','template','contents','collection')

function changeLinkColor(id){
     for (var i=0;i<tdIds.length;i++){
          if (id == tdIds[i]){
               document.getElementById(tdIds[i]).className = "left_menu_s_on";
               continue; 
          }
          document.getElementById(tdIds[i]).className ="left_menu_s";   
     }
}



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
    <title>New Document </title>
    <meta name="Generator" content="EditPlus">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">
    <script language="javascript">
    String.prototype.Replace = function(oldValue,newValue) 
    { 
        var reg = new RegExp(oldValue,"g"); 
        return this.replace(reg, newValue); 
    }
    //字符串替换;曾经很头疼写了很多代码,还是这个简单
    function replace(obj)
    {
        alert(obj.value.Replace("a","d"));
    }
    // 另存为文件
    function SaveCode(obj, filename) 
    {
        var win = window.open('', '_blank', 'top=100'); 
        var code = obj.innerText; 
        code = code == null || code == "" ? obj.value : code; 
        win.opener = null;
        win.document.write(code);
        win.document.execCommand('saveas', true, filename);
        win.close();
    }
    // 问候
    window.onload = function()
    {    
        var now = new Date();
        var hour = now.getHours();
        var greeting;
        if (hour < 6)
            greeting = "凌晨好";
        else if (hour < 10)
            greeting = "早上好";
        else if (hour < 14)
            greeting = "中午好";
        else if (hour < 18)
            greeting = "下午好";
        else 
            greeting = "晚上好";
            
        document.getElementById("hi").innerHTML = "<font color=red>" + greeting + "</font>" ;
    }
    // 将光标停在对象的最后
    function PutCursorAtLast(obj) 
    {  
        obj.focus();
        var range = obj.createTextRange(); 
        range.moveStart('character',obj.value.length); 
        range.collapse(true); 
        range.select(); 
    }
    // 将光标停在对象的最前
    function PutCursorAtFirst(obj) 
    {  
        obj.focus();
        var range = obj.createTextRange(); 
        range.moveStart('character',0); 
        range.collapse(true); 
        range.select(); 
    }
    </script>
</head><body><span id="hi"></span><br />
<span>curssor at last </span><br />
<input type="text" value="curssor at last" onclick="PutCursorAtLast(this)">
<br />
<span>curssor at first </span><br />
<input type="text" value="curssor at first" onclick="PutCursorAtFirst(this)">
<br />
<span>String.Replace </span><br />
<input type="TEXT" value="replace" onclick="replace(this)">
<br />
<span>save file </span><br />
<input type="text" value="hello word" onclick='SaveCode(this,"save")' />
</body></html>


// 返回字符的长度,一个中文算2个
String.prototype.ChineseLength=function()
{
    return this.replace(/[^\x00-\xff]/g,"**").length;
}
// 判断字符串是否以指定的字符串结束
String.prototype.EndsWith = function(str)
{
    return this.substr(this.length - str.length) == str;
}
// 去掉字符左端的的空白字符
String.prototype.LeftTrim = function()
{
    return this.replace(/(^[\\s]*)/g, "");
}
// 去掉字符右端的空白字符
String.prototype.RightTrim = function()
{
    return this.replace(/([\\s]*$)/g, "");
}
// 判断字符串是否以指定的字符串开始
String.prototype.StartsWith = function(str)
{
    return this.substr(0, str.length) == str;
}
// 去掉字符两端的空白字符
String.prototype.Trim = function()
{
    return this.replace(/(^\s*)|(\s*$)/g, "");
}
都是基于 String.prototype 的扩展:

起因是有个网友和我讨论两个函数,

一个是 isDateTime (判断字符是否是符合 yyyy-mm-dd hh:mm:ss日期格式)
另一个是 left 函数,类似vbscript的left 实现中英文字符的混合截取。

他两个函数都用了循环,还用了N多 if 语句,每个函数都超过了40行代码,问我有无好的办法精简一下。

于是,我就写出了下面的代码,不敢说最效率最高,但是已经是够精简了, left函数才1行


<script type="text/javascript">
//by Go_Rush(阿舜) from http://ashun.cnblogs.com/
 
 function $A(arrayLike){
     for(var i=0,ret=[];i<arrayLike.length;i++) ret.push(arrayLike[i])
     return ret
 };
 Array.prototype.any=function(f){
     for(var i=0;i<this.length;i++) if (f(this[i],i,this)) return true;
     return false
 };
 
 //判断 字符串 是否符合 yyyy-mm-dd hh:mm:ss的日期格式, 格式正确而且闰年闰月等也要正确
 
 String.prototype.isDateTime=function(){  
     try{
         var arr=(this.length==19)?this.split(/\D/):[]
         --arr[1]
         eval("var d=new Date("+arr.join(",")+")")    
         return     Number(arr[0])==d.getFullYear() && Number(arr[1])==d.getMonth() 
                      && Number(arr[2])==d.getDate() && Number(arr[3])==d.getHours()
                     && Number(arr[4])==d.getMinutes() && Number(arr[5])==d.getSeconds()
     }catch(x){return false}
 }
 
 /*
 alert("2002-12-12 10:10:40".isDateTime())  //true
 alert("2002-02-31 10:10:40".isDateTime())  //false
 alert("2002-22-31 10:10:40".isDateTime())  //false
 alert("2002-22-31 30:10:40".isDateTime())  //false
 */
 
 // 检查 是否以特定的字符串结束
 String.prototype.startsWith=function(){
     var _string=this
     return $A(arguments).any(function(value){return _string.slice(0,value.length)==value})
 };
 /*
 alert("http://www.google.com/".startsWith("http://","ftp://","telnet://"))  //true  满足其中任何一个就返回 true
 alert("http://www.google.com/".startsWith("https://","file://"))  //false
 alert("abc".startsWith("a"))  //true
 */
 
 // 检查 是否以特定的字符串结束
 String.prototype.endsWith=function(){
     var _string=this
     return $A(arguments).any(function(value){return _string.slice(value.length*(-1))==value})
 };
 
 //从左边截取n个字符 ,如果包含汉字,则汉字按两个字符计算
 String.prototype.left=function(n){
     return this.slice(0,n-this.slice(0,n).replace(/[\x00-\xff]/g,"").length)
 };
 /*
 alert("abcdefg".left(3)==="abc")
 alert("中国人cdefg".left(5)==="中国")
 alert("中国abcdefg".left(5)==="中国a")
 */
 
 //从右边截取n个字符 ,如果包含汉字,则汉字按两个字符计算
 String.prototype.right=function(n){
     return this.slice(this.slice(-n).replace(/[\x00-\xff]/g,"").length-n)
 };
 
 /*
 alert("abcdefg".right(3)==="efg")
 alert("cdefg中国人".right(5)==="国人")
 alert("abcdefg中国".right(5)==="g中国")
 */
</script>
分享到:
评论

相关推荐

    JavaScript积累

    以下将围绕“JavaScript积累”这一主题,从JS高级用法、经验总结以及具体的JS实例三个方面进行详细的探讨。 一、JS高级用法 1. **原型与原型链**:JavaScript的面向对象特性主要体现在原型(prototype)和原型链上...

    JavaScript完全解析

    不过,根据标题“JavaScript完全解析”和描述“本教程适合初学者和进阶者,由浅入深的介绍了javascript的用法和原理,对日常的开发有很大的帮助”,我们可以围绕JavaScript这门编程语言的基本概念、用法和原理,展开...

    ArcGIS JavaScript API 开发实例

    动态地图服务层是一种特殊的图层类型,它在每次用户进行缩放或平移操作时由服务器重新绘制。这种类型的图层没有预渲染的瓦片缓存,因此通常比瓦片图层加载速度慢。 **示例代码:** ```javascript var ...

    javascript正则表达式

    下面我们将深入探讨JavaScript正则表达式的基本概念、语法和常见用法。 1. **基本概念**: - **模式**:正则表达式模式是一个包含特殊字符的字符串,用于描述要匹配的文本模式。 - **实例化**:在JavaScript中,...

    您好,JavaScript:jsprimerを読んでjavascriptの基础理解。ほぼ日记

    闭包是一种特殊的现象,允许函数访问并操作其外部作用域的变量,即使在其外部函数已经执行完毕后。 7. **事件与DOM操作** JavaScript 通过事件监听和处理来响应用户交互。DOM(Document Object Model)是HTML和XML...

    切水果网页游戏源码:html5+js.rar_Fruit Master_切水果_切水果 源码_切水果网页_网页前端源码

    同时,可能还包含一些特殊道具或者障碍物的逻辑处理。 4. 动画更新:使用requestAnimationFrame或setTimeout函数进行游戏帧的更新,包括水果下落、切割效果、得分显示等动画。 5. 渲染:在`&lt;canvas&gt;`上绘制每一帧的...

    JS正则表达式比较常见用法

    3. 正则表达式类型:正则表达式中可以包含一些特殊字符和修饰符,用于定义匹配模式的具体行为。修饰符"g"代表全局搜索,不会在找到第一个匹配后停止;"i"代表不区分大小写。 4. match方法:返回所有匹配的结果作为...

    extjs4.0_中文.doc

    - **自定义组件**:用户可以基于现有组件创建自己的组件,以满足特殊需求。 - **主题定制**:Extjs4.0提供了丰富的主题定制功能,允许开发者修改UI风格。 - **事件处理**:掌握如何处理组件的各种事件对于开发交互式...

    正则表达式30 分钟入门教程

    对于一些复杂的正则表达式编写,例如在文本处理中提取特定数据,可能需要编写者具备较强的逻辑分析能力和经验积累。 在使用正则表达式时,还应注意其性能问题,尤其是在面对大量数据处理时。过于复杂的正则表达式或...

    FameAndFortune

    理解这些数据类型的差异和用法是学习JavaScript的第一步。 2. **变量与作用域**:JavaScript支持var、let和const声明变量,它们各自有不同的作用域规则。了解如何正确使用变量和管理作用域,可以避免常见的编程陷阱...

    JS的正则详解.doc

    本文将深入探讨JavaScript中的正则表达式,并通过具体的示例来解释其用法。 #### 二、正则表达式基础 在JavaScript中,正则表达式可以通过两种方式创建:一种是使用`RegExp`构造函数,另一种是使用正则表达式字面...

    js使用心得分享

    在此,笔者分享了自己学习和使用JavaScript后的一些心得体会,尽管目前只总结出5点,但将会持续更新,希望能够帮助到其他同行。以下是具体的几点心得: 1. 严格模式下,对未经声明的变量赋值会抛出ReferenceError...

    源码捕鱼模型参考

    【源码捕鱼模型参考】是针对网页编程领域中一种特殊的应用场景——捕鱼游戏动画制作的学习资源。源码捕鱼,顾名思义,是指提供捕鱼游戏的原始代码,以供开发者研究、学习和改进。这种类型的游戏通常涉及到丰富的图形...

    正则表达式

    在这个主题中,我们将深入探讨正则表达式的基本概念、语法以及常见用法。 1. **基础概念** - **字符集**: 正则表达式由一系列字符、元字符和运算符组成,用于描述一个字符序列。 - **模式匹配**: 正则表达式与...

    正则表达式入门经典

    随着经验的积累,用户可以更高效地利用正则表达式来处理各种文本数据,实现程序中的文本匹配、数据清洗、日志分析等诸多功能。因此,正则表达式入门经典作为初学者的学习资源,其重要性和实用性不言而喻。

    正 则 表 达 式 教 程

    本教程旨在帮助你掌握正则表达式的基本概念、语法以及常见用法,助你在处理字符串时游刃有余。 1. **基本概念** - **字符集**: 正则表达式由一系列特殊字符和普通字符组成,用于定义要匹配的字符模式。 - **匹配...

    Jquery学习笔记分享

    10. **特殊符号选择器**:`."class"`、`#id`、`\(expression\)`和`\[attribute\]`用于包含这些特殊字符的类、ID、表达式和属性。 ### 第3章:jQuery中的DOM操作 1. **插入节点**:`before()`, `after()`, `prepend...

    HTML语法入门(简单的基本HTML语法知识) 

    ... ...本文将介绍一些基本的HTML标签及其用法,帮助初学者快速上手。 #### 二、文本格式化 ...随着经验的积累,还可以进一步学习更复杂的HTML结构以及CSS和JavaScript等技术来提升网页的交互性和美观性。

    正则表达式教程(经典)

    1. 元字符:正则表达式中的特殊字符,如`.`代表任意字符,`^`表示行首,`$`表示行尾,`\d`代表数字,`\w`代表字母或数字,`\s`代表空白字符。 2. 量词:用来指定某个字符或字符集出现的次数,如`*`表示零次或多次,...

    [整站程序]中国癌症网整站 v1.0_aizheng(ASP.NET源码).rar

    通过学习这个源码,开发者不仅可以掌握ASP.NET的基本用法,还可以了解到如何设计和实现一个完整的网站架构,如何组织和管理数据,以及如何优化用户体验。同时,对于想要进入医疗健康领域的开发者,这是一个很好的...

Global site tag (gtag.js) - Google Analytics