JavaScript 应用类库-S.Sams Lifexperience ScriptClassLi

【Claude Code · VibeCoding】11|需求梳理:云枢智学 / 学员平台 第三章 · 项目实战以「云枢智学」学员平台为例,把业务目标拆成可执行的需求条目。 阅读详情
JavaScript 应用类库-S.Sams Lifexperience ScriptClassLi


http://www.cnblogs.com/Files/S.Sams/SamsJavaScriptLibrary.rar
<script language="javascript">
/*------------------------------------------------------------
 *                    S.Sams Lifexperience
 * CopyRight (C) 2003-2007 S.Sams Lifexperience ScriptClassLib
 * MSNLive: S.Sams#msn.com
 * Http://blog.8see.net/
 * UPdate by : 2007-01-19 转载传播请保留版权
 *-----------------------------------------------------------*/
 

/*    $ 获取指定对象
    @element    对象名
    可以使用对象名集合,返回值为对象的集合
    如果您使用了 Prototype 类库, 请把该函数注释掉
    Sams_object.Get() 中同样实现该函数的所有功能
*/
function $(element) {
  if (arguments.length > 1) {
    for (var i = 0, elements = [], length = arguments.length; i < length; i++)
      elements.push($(arguments[i]));
    return elements;
  }
  if (typeof element == 'string')
    element = document.getElementById(element);
  return element;
}

/// 浏览器相关操作
var Sams_browse = {
    /*    检测浏览信息 */
    checkBrowser : function ()
    { 
                this.ver=navigator.appVersion 
                this.dom=document.getElementById?1:0 
                this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom)?1:0; 
                this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom)?1:0; 
                this.ie4=(document.all && !this.dom)?1:0; 
                this.ns5=(this.dom && parseInt(this.ver) >= 5) ?1:0; 
                this.ns4=(document.layers && !this.dom)?1:0; 
                this.mac=(this.ver.indexOf('Mac') > -1) ?1:0; 
                this.ope=(navigator.userAgent.indexOf('Opera')>-1); 
                this.ie=(this.ie6 || this.ie5 || this.ie4) 
                this.ns=(this.ns4 || this.ns5) 
                this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns5 || this.ns4 || this.mac || this.ope) 
                this.nbw=(!this.bw) 
                return this;
    },

    /*    设为首页
        @url        要设为首页的地址
    */
    SetDefault : function ()
    {
        this.style.behavior='url(#default#homepage)';
        this.setHomePage(this.GetUrl());
        return false;
    },

    /*    复制指定URL地址
        @Msg        要写入剪贴板的字符集
    */
    SetCopy    : function (Msg){
        if(navigator.userAgent.toLowerCase().indexOf('ie') > -1) {
            clipboardData.setData('Text',Msg);
            alert ("网址“"+Msg+"”/n已经复制到您的剪贴板中/n您可以使用Ctrl+V快捷键粘贴到需要的地方");
        }
        else 
        {
            prompt("请复制网站地址:",Msg); 
        }
    },

    /*    加入收藏
        @site        站点名称
        @url        地址
    */
    AddBookmark : function (site, url){
        if(navigator.userAgent.toLowerCase().indexOf('ie') > -1) {
            window.external.addFavorite(url,site)
        } else if (navigator.userAgent.toLowerCase().indexOf('opera') > -1) {
            alert ("请使用Ctrl+T将本页加入收藏夹");
        } else {
            alert ("请使用Ctrl+D将本页加入收藏夹");
        }
    },

    /*    打开Url指定宽度和高度的窗口 */
    OpenWindows : function (url,width,height)
    {
        window.open(url,'newwin','width='+width+',height='+height);
        return false;
    },

    /*    禁止浏览器的Javascript错误提示 */
    CloseError : function(){
        window.onerror = function(){return true;};
    },

    /*    获取浏览器URL */
    GetUrl : function(){
        return location.href;
    },

    /*    获取URL参数 */
    GetUrlParam : function(){
        return location.search;
    },
    
    /*    获取页面来源 */
    GetFrom : function(){
        return document.referrer;
    },

    /*    获取指定的URL参数值
        @name        参数名
    */
    Request : function(name){
        var GetUrl = this.GetUrl();
        var Plist = new Array();
        if(GetUrl.indexOf('?') > 0)
        {
            Plist = GetUrl.split('?')[1].split('&');
        }
        else if(GetUrl.indexOf('#') > 0)
        {
            Plist = GetUrl.split('#')[1].split('&');
        }
        if (GetUrl.length > 0)
        {
            for(var i=0; i<Plist.length; i++)
            {
                var GetValue = Plist[i].split('=');
                if (GetValue[0].toUpperCase() == name.toUpperCase())
                {
                    return GetValue[1];
                    break;
                }
            }
            return;
        }
    },

    /*    直接将HTML写到新窗口
        @title        标题
        @msg        内容
    */
    Popmsg : function PopIt(title,msg)
    {
        var popup = window.open('','popDialog','height=500,width=400,scrollbars=yes');
        popup.document.write('<html><title>'+title+'</title><style>body{margin:10px;font:13px Arial;}span{text-line:20px;}</style><body><span style=/'font:14px arial;/'>'+msg + '</span></body></html>');
        popup.document.close();
    }
};


/// 对象操作
var Sams_object = {
    
    /*    创建一个DIV对象
        @ID            要创建的对象ID
        @ClassName    创建对象的Class
        @SetValue    设置该对象值
        @ToDiv        将对象追加到指定的对象,如指定的对象不存在,则追加在Body的后面
        返回        创建后的对象
    */
    CreateDiv : function (ID,ClassName,SetValue,ToDiv){
        var creatediv = document.createElement('div');
        if(ID != null) creatediv.id = ID;
        creatediv.style.position = 'absolute';
        if(ClassName != null) creatediv.className = ClassName;
        if(this.Get(ToDiv))
        {
            this.Get(ToDiv).appendChild(creatediv);
        }
        else
        {
            document.getElementsByTagName('body')[0].appendChild(creatediv);
        }
        this.SetValue(ID,SetValue);
        return this.Get(ID);
    },
    
    /*    删除指定DIV对象
        @objid        要删除的对象ID
        返回        Bool 操作结果
    */
    DeleteDiv : function (objid)
    {
        try
        {
            if(this.Get(objid))
            {
                var GetParent = this.Get(objid).parentNode;
                GetParent.removeChild(this.Get(objid));
                return true;
            }
            else
            {
                return false;
            }
        }
        catch(e)
        {
            return false;
        }
    },

    /*    获取浏览器对象
        @id        要获取的对象ID
        可以使用对象名集合,返回值为对象的集合
    */
    Get : function (objid) {
        if (arguments.length > 1) {
            for (var i = 0, objids = [], length = arguments.length; i < length; i++)
              objids.push(this.Get(arguments[i]));
            return objids;
        }
        if (typeof objid == 'string')
        {
            if (document.getElementById) {
                objid = document.getElementById(objid);
            } else if (document.all) {
                objid = document.all[objid];
            } else if (document.layers) {
                objid = document.layers[objid];
            }
        }
        return objid;
    },
    
    /*    获取对象的值
        @objid        对象ID
    */
    GetValue : function (objid) {
        if (typeof objid == 'string')
        {
            var getTagName = this.Get(objid).tagName.toLowerCase();
            if (getTagName == 'input' || getTagName == 'textarea' || getTagName == 'select')
            {
                return this.Get(objid).value;
            }
            else if (getTagName == 'div' || getTagName == 'span')
            {
                return this.Get(objid).innerText;
            }
        }
        else if (typeof objid == 'object')
        {
            return objid.value;
        }
    },

    /*    设置指定对象的值,实现可以直接赋值或清除操作
        @objid        对象ID
        @inserValue    传入值(可选项 Null:清除该ID的值, 则直接赋值)
    */
    SetValue: function(objid,inserValue) {
        var getTagName = this.Get(objid).tagName.toLowerCase();
        if (inserValue == null) inserValue = '';
        if (getTagName == 'input' || getTagName == 'textarea')
        {
            this.Get(objid).value = inserValue;
        }
        else if (getTagName == 'div' || getTagName == 'sapn')
        {
            
            this.Get(objid).innerText = inserValue;
        }
    },
    
    /*    拷贝对象值到剪贴板  
        @str        对象值
    */
    CopyCode : function (str) {
        var rng = document.body.createTextRange();
        rng.moveToElementText(str);
        rng.scrollIntoView();
        rng.select();
        rng.execCommand("Copy");
        rng.collapse(false);
    },
    
    /*    显示隐藏一个对象 
        @Objid        对象ID
        @isshow        具体操作,指定Obj为False : none或者True : block (可选)
    */
    ShowHidd : function(objid,isshow){
        if (isshow != null)
        {
            if(isshow)
            {
                this.Get(objid).style.display = 'block';
            }
            else
            {
                this.Get(objid).style.display = 'none';
            }
        }
        else
        {
            if(this.Get(objid).style.display == 'none')
            {
                this.Get(objid).style.display = 'block';
            }
            else
            {
                this.Get(objid).style.display = 'none';
            }
        }
    },
    
    /*    当前对象是否可见
        @objid        对象ID
    */
    IsVisible : function(objid){
        if(this.Get(objid))
        {
            try
            {
                if (this.Get(objid).style.display == 'none')
                {
                    return false
                }
                if(this.Get(objid).style.visibility == 'hidden')
                {
                    return false;
                }
                return true;
            }
            catch(e)
            {
                return false;
            }
        }
        else
        {
            return false;
        }
    }
};

/// 字符处理
var Sams_string = {
    /*    取左边的指定长度的值  
        @str        要处理的字符集
        @n            长度
    */
    Left : function (str,n)
    {
        if(str.length > 0)
        {
            if(n>str.length) n = str.length;
            return str.substr(0,n)
        }
        else
        {
         return;
        }
    },
    
    /*    取右边的指定长度的值   
        @str        要处理的字符集
        @n            长度
    */
    Right : function (str,n)
    {
        if(str.length > 0)
        {
            if(n>=str.length) return str;
            return str.substr(str.length-n,n);
        }
        else
        {
            return;
        }
    },
    
    /*    Trim:清除两边空格 
        @str        要处理的字符集
    */
    Trim : function (str) 
    {
        if (typeof str == 'string') return str.replace(/(^/s*)|(/s*$)/g, '');
    },

    /*    LTrim:清除左边的空格 
        @str        要处理的字符集
    */
    Ltrim : function (str) 
    { 
        if (typeof str == 'string') return str.replace(/(^/s*)/g, '');
    },

    /*    RTrim: 清除右边的空格 
        @str        要处理的字符集
    */
    Rtrim : function (str) 
    { 
        if (typeof str == 'string') return str.replace(/(/s*$)/g, '');
    },
    
    /*    清除前后的非字符
        @str        要处理的字符集
    */
    strip : function(str) {
        if (typeof str == 'string') return str.replace(/^/s+/, '').replace(/(^/s*)|(/s*$)/g, '');
    },

    /*    过滤字符里面的HTML标签
        @str        要处理的字符集
    */
    stripTags : function(str) {
        if (typeof str == 'string')return str.replace(/<//?[^>]+>/gi, '').replace(/(^/s*)|(/s*$)/g, '');
    }
};

/// 时间相关操作
var Sams_time = {
    /*    获取当天日期 yyyy-MM-dd */
    GetDateNow : function (){
        var d,y,m,dd;
        d = new Date(); 
        y = d.getYear();
        m = d.getMonth() + 1;
        dd = d.getDate();                                                
        return y+"-"+m+"-"+dd;
    },

    /*    获取指定日期后的特定天数的日期值
        @toDate        当前指定的日期
        @N            要添加的日期数
    */ 
    AddDays : function(toDate,N){
        var aDate=this._cvtISOToDate(toDate);
        if (!aDate) return "";
        var millis=86400000 * N;
        aDate=new Date(aDate.getTime()+millis);
        return this._fmtDateISO(aDate);
    },
    _fmtDateISO : function (aDate) {
        with (aDate) {
            var mm=getMonth()+1;
            if (mm<10) {mm='0'+mm;}
            var dd=getDate();
            if (dd<10) {dd='0'+dd;}
            return (getFullYear() + '-' + mm + '-' + dd);
        }
    },
    _cvtISOToDate : function (isoDate) {
        var atomDate= isoDate.split('-');
        var aDate=new Date(parseInt(atomDate[0],10),parseInt(atomDate[1],10)-1,parseInt(atomDate[2],10),6,0,0);
        return aDate;
    }
};

/// 图像相关操作
var Sams_media = {
    /*    为单一图像添加鼠标中键放大缩小功能, 批量可以直接用 ResizeImage(指定添加该功能的图片大小:Int) 即可 (该功能只适用于IE)
        objid        对象ID    
    */
    ZoomFun : function(objid){
        Sams_object.Get(objid).onmousewheel = function(){return Sams_media.imagecontrol(this);}
    },

    /*    重置图片尺寸同时添加放大功能 (该功能只适用于IE) 
        @IntSize    指定图像的大小
        如果适合图像大小就添加放大缩小功能
    */ 
    ResizeImage: function (IntSize) {
        var imgsinlog=document.getElementsByTagName('img');
        for(j=0; j<imgsinlog.length; j++) {
            if (imgsinlog[j].width >= IntSize) {
                imgsinlog[j].width = IntSize;
                imgsinlog[j].style.cursor= 'pointer';
                imgsinlog[j].onclick = function() {window.open(this.src);}
                if (navigator.userAgent.toLowerCase().indexOf('ie') > -1) {
                    imgsinlog[j].title = '您可以用鼠标中键或者使用Ctrl+鼠标滚轮缩放图片,点击图片可在新窗口打开';
                    imgsinlog[j].onmousewheel = function(){return Sams_media.imagecontrol(this);};
                }
                else
                {
                    imgsinlog[j].title = '点击图片可在新窗口打开';
                }
            }
        }
    },
    imagecontrol : function(obj){
        var zoom=parseInt(obj.style.zoom, 10)||100;zoom+=event.wheelDelta/12;
        if (zoom>0) obj.style.zoom=zoom+'%';
        return false;
    },

    /*    如果图像出现下载不了等异常,显示的错误提示图片
        @errimgpath    显示错误提示的图像路径
    */ 
    ImagesError : function(errimgpath){
        var imglist = document.getElementsByTagName('img');
        for(j=0; j<imglist.length; j++) {
            imglist[j].onerror = function(){
                this.src = errimgpath;
            }
        }
    },

    /*    显示媒体
        @mFile        文件路径
        @mFileType    文件类型(可为空,如为Flash,要指定为swf类型)
        @ObjID        对象ID
        @mWidth        显示的对象宽度
        @mHeight    显示对象的高度
        注: 可以指定对象的ID, 如果ID不存在,会自动创建,追加在Body后面
    */
    ShowMedia : function (mFile, mFileType, ObjID, mWidth, mHeight) {
        var mediaStr;
        switch(mFileType){
            case "swf":
                mediaStr="<object codeBase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' width='"+mWidth+"' height='"+mHeight+"'><param name='movie' value='"+mFile+"'><param name='quality' value='high'><param name='AllowScriptAccess' value='never'><embed src='"+mFile+"' quality='high' pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width='"+mWidth+"' height='"+mHeight+"'></embed></OBJECT>";
                break;
            default :
                mediaStr="<object width='"+mWidth+"' height='"+mHeight+"' classid='CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6'><param name='url' value='"+mFile+"' /><embed width='"+mWidth+"' height='"+mHeight+"' type='application/x-mplayer2' src='"+mFile+"'></embed></object>";
        }
        
        var mediaDiv = Sams_object.Get(ObjID);
        
        if (mediaDiv) {
            mediaDiv.innerHTML = mediaStr;
        } 
        else
        {
            mediaDiv = document.createElement("div");
            mediaDiv.id = ObjID;
            mediaDiv.innerHTML = mediaStr;
            document.getElementsByTagName('body')[0].appendChild(mediaDiv);
        }
        return false;
    }
};

/// 样式相关操作
var Sams_style = {
    /*    改变字体大小
        @objid        对象ID
        @size        字号
    */
    doZoom : function (objid,size){
        Sams_object.Get(objid).style.fontSize=size+'px';
    },

    /*    改变指定对象样式
        @objid        对象ID
        @className    要更改的ClassName
    */
    ClassName: function(objid, className) {
        Sams_object.Get(objid).className = className;
    },
    
    /*    对象定位
        @obj        要定位的对象
        返回        X.Y 结果的数组对象
    */
    GotoXY : function (obj) {
        var t=obj.offsetTop; 
        var l=obj.offsetLeft; 
        while(obj=obj.offsetParent){ 
            t+=obj.offsetTop; 
            l+=obj.offsetLeft; 
        }
        return Array(t,l);
    }
};

/// 科学计算
var Sams_account = {
    /*    逢1进10计算
        @ 数值
    */
    GetTen: function (i)
    {
        var items_One,Get_One;
        if (i.length > 1&& (/^/d+$/.test(i)))
        {
           items_One = i.substr(0,i.length-1);
           Get_One = i.substr(i.length-1,1);
           if (parseInt(Get_One)>0)
           {
            items_One = parseInt(items_One)+1;
            items_One = items_One + '0';
           }
           else
            {
            items_One = items_One + '0';    
            }
        }
        else
        {
            items_One = i;
        }
        return items_One;
    }
};

/// 数据验证(所有数值返回值均为Bool型)
var Sams_validate = {
    /*    是否是数字型数据
        @str        字符集
    */
    IsNumber : function(str){
        if (/^/d+$/.test(str)){return true;}else{return false;}
    },

    /*    是否是数字型数据
        @objid        对象ID
    */
    IsNumberObj : function(objid){
        return this.IsNumber(Sams_object.GetValue(objid));
    },

    /*    是否是自然数型数据
        @str        字符集
    */
    IsInt : function(str){
        if (/^(/+|-)?/d+$/.test(str)){return true;}else{return false;}
    },

    /*    是否是自然数型数据
        @objid        对象ID
    */
    IsIntObj : function(objid){
        return this.IsInt(Sams_object.GetValue(objid));
    },
    
    /*    是否是中文字符
        @str        字符集
    */
    IsChinese : function(str)
    {
        if (/^[/u4e00-/u9fa5]+$/.test(str)){return true;}else{return false;}
    },

    /*    是否是中文字符
        @objid        对象ID
    */
    IsChineseObj : function(objid)
    {
        return this.IsChinese(Sams_object.GetValue(objid));
    },

    /*    是否为英文字母
        @str        字符集
    */
    IsLower : function(str)
    {
         if (/^[A-Za-z]+$/.test(str)){return true}else{return false;}
    },

    /*    是否为英文字母
        @objid        对象ID
    */
    IsLowerObj : function(objid)
    {
         return this.IsLower(Sams_object.GetValue(objid));
    },

    /*    是否为正确的网址
        @str        字符集
    */
    IsUrl : function(str)
    {
        var myReg = /^((http:[/][/])?/w+([.]/w+|[/]/w*)*)?$/;    
        if(myReg.test(str)){return true;}else{return false;}
    },

    /*    是否为正确的网址
        @objid        对象ID
    */
    IsUrlObj : function(objid)
    {
        return this.IsUrl(Sams_object.GetValue(objid));
    },

    /*    是否为正确的Email形式
        @str        字符集
    */
    IsEmail : function(str)
    {
        var myReg = /^([-_A-Za-z0-9/.]+)@([_A-Za-z0-9]+/.)+[A-Za-z0-9]{2,3}$/;    
        if(myReg.test(str)){return true;}else{return false;}
    },
    
    
    /*    是否为正确的Email形式
        @objid        对象ID
    */
    IsEmailObj : function(objid)
    {
        return this.IsEmail(Sams_object.GetValue(objid));
    },

    /*    是否为正确的手机号码
        @str        字符集
    */
    IsMobile : function(str)
    {
        var regu =/(^[1][3][0-9]{9}$)|(^0[1][3][0-9]{9}$)/;   
        var re = new RegExp(regu);   
        if (re.test(str)){return true;}else{return false;}
    },

    /*    是否为正确的手机号码
        @objid        对象ID
    */
    IsMobileObj : function(objid)
    {
        return this.IsMobile(Sams_object.GetValue(objid));
    }
};

/*
    实现Ajax功能
    Sams_ajax.SendRequest('GET', url, null, recall, "addtohome");
    Sams_ajax.SendRequest('GET', url, null, null);
    obj.responseText;
*/
var Sams_ajax = {
    _objPool: [],
    _getInstance: function (){
        for (var i = 0; i < this._objPool.length; i ++){
            if (this._objPool[i].readyState == 0 || this._objPool[i].readyState == 4){
                return this._objPool[i];
            }
        }
        this._objPool[this._objPool.length] = this._createObj();
        return this._objPool[this._objPool.length - 1];
    },
     _createObj : function (){
        if (window.XMLHttpRequest){
            var objXMLHttp = new XMLHttpRequest();
        }
        else{
            var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
            for(var n = 0; n < MSXML.length; n ++){
                try{
                    var objXMLHttp = new ActiveXObject(MSXML[n]);
                    break;
                }
                catch(e){
                }
            }
         }          
        if (objXMLHttp.readyState == null){
            objXMLHttp.readyState = 0;
            objXMLHttp.addEventListener("load", function (){
                    objXMLHttp.readyState = 4;
                    if (typeof objXMLHttp.onreadystatechange == "function"){
                        objXMLHttp.onreadystatechange();
                    }
                },  false);
        }
        return objXMLHttp;
    },

    /// 开始发送请求
    SendRequest : function (method, url, data, callback,funparam,funparam2){
        var objXMLHttp = this._getInstance();
        with(objXMLHttp){
            try{
                if (url.indexOf("?") > 0){
                    url += "&randnum=" + Math.random();
                }
                else{
                    url += "?randnum=" + Math.random();
                }
                open(method, url, true);            
                setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
                send(data);
                onreadystatechange = function (){
                    if (objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304))
                    {
                        callback(objXMLHttp,funparam,funparam2);
                    }else{
                        callback(null,funparam,funparam2);
                    }
                }
            }
            catch(e){
                alert(e);
            }
        }
    }
};

/// Cookies操作
var Sams_cookies = {
    /*    cookies设置函数
        @name        Cookies名称
        @value        值
    */
    setCookie : function (name, value)
    {
        try
        {
            var argv = setCookie.arguments;
            var argc = setCookie.arguments.length;
            var expires = (argc > 2) ? argv[2] : null;
            if(expires!=null)
            {
                var LargeExpDate = new Date ();
                LargeExpDate.setTime(LargeExpDate.getTime() + (expires*1000*3600*24));
            }
            document.cookie = name + "=" + escape (value)+((expires == null) ? "" : ("; expires=" +LargeExpDate.toGMTString()));
            return true;
        }
        catch(e)
        {
            return false;
        }
    },

    /*    cookies读取函数
        @Name        Cookies名称
        返回值        Cookies值
    */
    getCookie : function (Name)
    {
        var search = Name + "="
        if(document.cookie.length > 0) 
        {
            offset = document.cookie.indexOf(search)
            if(offset != -1) 
            {
                offset += search.length
                end = document.cookie.indexOf(";", offset)
                if(end == -1) end = document.cookie.length
                return unescape(document.cookie.substring(offset, end))
            }
            else
            {
                return;
            }
        }
    }
};
</script>
<img src="http://www.google.cn/intl/zh-CN/images/logo_cn.gif" id="I"><br/>

<input type="button" value="指定日期加N天后的日期值" onclick="alert(Sams_time.AddDays('2006-12-12','123'));">
<input type="button" value="请求URL指定参数的值" onclick="alert(Sams_browse.Request('o'));">
<input type="button" value="显示隐藏Medio" onclick="Sams_object.ShowHidd('I');">
<input type="button" value="字符处理" onclick="Sams_object.SetValue('ToHtml',Sams_string.stripTags(Sams_object.GetValue('Content')));">
<input type="button" value="清除字符" onclick="Sams_object.SetValue('ToHtml');Sams_object.SetValue('S','S.Sams lifexperience!');">
<input type="button" value="FormValue" onclick="var ads = Sams_object.Get('Content','ToHtml');for(var s in ads){alert(ads[s].value);};">
<input type="button" value="CopyUrl" onclick="Sams_browse.SetCopy(Sams_browse.GetUrl());"> 

<div id="medias"></div>

<textarea name="Content" wrap="virtual" id="Content" style="width:100%;height:100px;background:#F9F9F9;">    <STRONG>公交车</STRONG><BR>  北京的公交车为人们的出行提供了很大方便,不仅有普通的公共电车或汽车,还有“8”字头的空调车、“特”字头的特线双层巴士及夜班车(201路到212路)等,票价有多种,其中空调车、特线车、夜班车无论是否开空调,票价一律为2元/人,有人售票车则按线路长短实行多级制票价。</P>
</textarea>
<div style="display:;">
<textarea id="ToHtml" style="width:100%;height:100px;background:#FFFFCC;"></textarea>
</div>
<div id="S">夜班车无论是否开空调,票价一律为2元/人,有人售票车则按线路长短实行多级制票价</div>


<style>
.AlertDivCity_Class{background:#eeeeee;width:150px;height:auto;position:absolute;}
</style>

<script language="JavaScript">
<!--
    Sams_media.ZoomFun('I');
    //Sams_media.ResizeImage(286);
    //Sams_media.ShowMedia('http://audreyhepburn.star.uland.com/resource/media/0/17/17620/20061002231151823.mp3','','mediasw','500','500');

    //alert(Sams_object.CreateDiv('SamsID','AlertDivCity_Class','CreateDiv Value','S').innerText);
    //setTimeout(function(){if(Sams_object.DeleteDiv('SamsID')){alert('Div delete succeed !')}},1000);
    if(document.getElementById('ToHtml').parentNode.style.display != 'none')Sams_object.Get('ToHtml').focus();
//-->
</script>
 
2023东华大学机试OJ进阶版1-81题 先排序。每次找两个最小的数,把其中一个置为两数之和,并累加这个和值,另一个数置为-1,然后再排序,重复操作,直到只剩下一个数。105。 阅读详情

相关推荐

WPF数据可视化:LiveCharts自定义X轴与Y轴的5个实战技巧(附完整代码)

本文详细介绍了在WPF应用中使用LiveCharts进行数据可视化时,自定义X轴与Y轴的5个核心实战技巧。内容涵盖精确控制刻度步距、深度定制视觉样式、实现多轴布局对比、优化显示空间以及构建响应式动态轴,并提供了完整的C#和XAML代码示例,帮助开发者创建专业且用户体验出色的图表。

moss5的博客 691

Web 版翻译者资料库

本项目是桌面版《翻译者资料库》的 Web 移植版,基于 Spring Boot 3.3、Thymeleaf、Bootstrap 5.3 与 MySQL 8.0 构建。它面向翻译写作提供资料、词汇、句库、文本工具、对照制作、查找、备份恢复及旧库迁移等功能,完整继承桌面版核心业务规则,支持一键启动与离线访问。

howard2005的专栏 132

两轮差速小车循线控制原理分析

硬件资料设定:小车驱动来自于两个相同的电机,转向依靠两轮差速实现,小车前后左右安装超声波传感器,前后各一个,左右各两个; 功能目标:假设小车左侧有墙壁,通过超声波测距实现按指定距离沿墙行驶 参数设定:车轮半径r=3cm,车轮间距wd=10cm,车身长length=16cm,侧边超声波传感器前后各一个,假设一个在车头一个在车尾,间距=车身=length=16cm,小车线速度恒定v = 0.2m/s,距离墙d=10cm,假设超声波传感器以10Hz的频率采集距离。 在以上条件下,设定小车出发点,方向与墙平行

aibingjin的博客 1万+

React 性能:memo / useMemo / useCallback

讲清 memo/useMemo/useCallback 的配合与边界,先测量再优化,避开常见过早优化。

JudithHuang的博客 325

电商秒杀场景下,如何用Redis+Lua脚本实现原子性库存扣减(附完整代码)

本文针对电商秒杀场景下的高并发与超卖难题,详细解析了如何利用Redis的原子性命令与Lua脚本实现可靠的库存扣减。通过对比多种方案,阐述了Redis+Lua作为黄金搭档的技术原理,并提供了从基础扣减到预扣减模型的完整代码实现,确保在高并发下数据的一致性与系统性能。

weixin_29219539的博客 503

matinal:S4 HANA 详解ACDOCA与BSEG的区别都在这了

当你在Coding Block中添加自定义字段的时候

matinal 當冬夜漸暖 。公众号:matinal 4572

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 330

F5 GTM DNS 实战指南:智能DNS的监控与健康检查机制

本文深入解析F5 BIG-IP GTM智能DNS的核心机制,重点阐述其监控与探针两大功能如何协同工作。监控器负责深度检查服务器应用健康,确保服务可用性;探针则实时测量网络路径质量,实现基于延迟的智能流量调度。文章通过实战配置步骤,指导如何构建逻辑架构、建立iQuery通信、配置业务级健康检查及探针,从而构建高可用、高性能的全局负载均衡解决方案。

weixin_29240711的博客 469

DSH (DeepSeek Harness) Windows 升级安装指南20261107

注意:如果在普通窗口执行 nvm 提示找不到命令,或执行 nvm use 提示 Access is denied,请务必关闭当前窗口,重新打开一个管理员CMD 执行上述完整路径命令。找到 .credentials.yaml,将其重命名为 .credentials.yaml.bak(备份并使其失效)。Node.js Storage Location:可改到非系统盘(如 D:\dev\nvm,避免路径含空格或中文)。打开文件资源管理器,进入 C:\Users<你的用户名>.dsh\。

fengye207161的博客 183

从零构建:用Arduino和MCP2515模块搭建你的第一个CAN Bus网络

本文详细介绍了如何使用Arduino和MCP2515模块从零搭建CAN Bus网络,实现温湿度数据的传输与显示。涵盖硬件连接、软件配置、发送端与接收端代码实现,以及系统调试和进阶应用,帮助初学者快速掌握CAN总线通信技术。

d6e7f8的博客 831

基于STM32的IMU惯性/姿态解算与多参数上位机可视化实现_资料编号38

本项目实现基于STM32F103C8T6标准库,对姿态/惯性(IMU)传感器姿态解算,通过USB-TTL转串口模块将姿态角/欧拉角、加速度、角速度、磁场、气压、海拔高度、磁力计温度、气压计温度等数据显示在PC端上位机,系统采用可充电锂电池供电。

嵌入式阿齐Archie 1万+

SpringBoot「衣依」服装销售平台:144个Java文件180个接口,从挑衣服到收货评价整条链路都在

# SpringBoot「衣依」服装销售平台:144个Java文件180个接口,从挑衣服到收货评价整条链路都在 > 这是一套基于 Spring Boot 的服装销售平台源码,配套 `db.sql` 建表脚本,业务覆盖商品展示、购物车、订单流转、收货地址、订单评价、商品评论、在线客服、轮播图和资讯。形态是**前后台双端**:前台是顾客逛的商城,后台是管理员管的控制台。本文带你看清里面有什么、怎么跑

面朝大海 225

深度学习框架对比:AI开发如何选择

你是否遇到过这样的困惑:想做一个图像分类模型,朋友推荐PyTorch;公司要部署智能客服,同事说用TensorFlow;想快速验证想法,学长又提到Keras……深度学习框架种类繁多,功能重叠却各有侧重。本文将覆盖主流框架(PyTorch/TensorFlow/Keras/JAX/MXNet等),从开发者真实需求出发,总结选择框架的核心维度。本文将按照“认识框架→对比特性→实战选择”的逻辑展开:先通过生活比喻理解各框架特点,再用代码对比核心功能,最后结合真实场景给出选择建议。动态计算图。

AI 领航者的博客 1162

微信小程序-wxs

在微信开发者工具中右键创建.wxs后缀的文件。每个.wxs文件也是一个独立模块,同样使用导出内容。示例(文件return d;FOO: foo,bar: bar(外联定义参考官方文档)

dreams_dream的博客 334

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

使用echarts模拟甘特图

项目中需按时间段展示不同颜色的数据,通过解析时长并统计各类型总时长,结合预设颜色映射表(含自定义与默认色),动态生成ECharts图表。利用sumByTypeName聚合数据,为每类分配对应颜色,实现图例与柱状图的精准匹配,确保多时段、多类型数据可视化清晰准确。

uuai 28

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【技术专题】JavaScript 网页技术 - JavaScript 流程控制

小锋老师推出《一天学会JavaScript(无废话版)》视频教程,涵盖基础语法、流程控制、函数、数组对象、DOM操作及ES6新特性。内容精炼,配套课件与源码打包下载,助力快速入门。重点讲解if/else、switch、for/while循环、for...of/in遍历及break/continue使用场景,并通过成绩判断实例演示实际应用。适合零基础学习者高效掌握核心技能。

java1234的博客 150

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

基于 FastAPI+LangChain+LangGraph+Agent+Vue3+MySQL 的房产数据采集与房价预测分析平台

本文介绍一个完整的「房产数据采集+AI房价预测」全栈项目,涵盖FastAPI异步后端、LangGraph Agent智能问答、爬虫采集、机器学习预测与Vue3前端,实现从数据采集到AI交互的闭环。项目融合多技术栈,具备真实业务场景与生产级设计(如降级策略、流式输出、多模型对比),兼具简历亮点与答辩演示优势,可系统性提升工程能力,并附高频面试题解析,是理想的技术综合实践项目。

深耕开发,专注编程实战。分享源码解析、项目搭建、问题排查笔记,沉淀技术,持续更新。 225

Agent 的 ReAct、Plan、Execute、Reflection 模式

本文系统解析 Agent 的 ReAct、Plan、Execute、Reflection 四模式,揭示其核心为“下一步谁定”与“错了怎么发现”两大问题。ReAct 逐步决策,适合动态环境但易冗余;Plan 一次性规划,高效却惧变化;Execute 严格落地,需明确判据与失败策略;Reflection 事后校验,强化纠错闭环。四者协同:外层规划,执行中嵌入思考,每步后反思,连续失败才重规划,构建稳定可控的智能体工作流。

2401_89855466的博客 324

货运APP、货运小程序开发:网络货运平台与同城配送搬家系统实战

本文介绍一套完整的货运平台系统,涵盖货运APP、小程序、网络货运、同城配送、搬家预约等场景,基于SpringBoot+MyBatisPlus+MySQL技术栈,采用uni-app实现多端统一开发,配套TMS运输管理与物流管理系统,支持下单、派单、运输、结算全流程,适用于货运搬家、物流搬运与配送业务,可作为物流软件及TMS系统的参考实现。

juzige03的博客 217

Vue3 低代码移动表单设计器实战(二):缩放画布下的拖拽系统与树状级联数据结构

本文深入剖析Vue3低代码表单设计器在缩放画布下的拖拽失效问题,揭示SortableJS在CSS Transform下坐标崩溃的数学根源。通过自研独立视觉克隆壳层与逆向几何补偿算法,实现精准拖拽;采用扁平数据存储+运行时树状计算结构,解决级联依赖与深克隆难题,确保逻辑一致性与性能优化,为复杂低代码系统提供可复用的工程范式。

NanChen的博客 339

Vue-Router

本文详解前端路由原理与实现,以网易云音乐为例,介绍通过 vue-router 实现页面无刷新切换。核心步骤包括:安装模块、创建路由实例、注册应用、配置页面组件与路由出口。使用 router-link 实现声明式导航,结合 query 和 params 传参,支持模糊与精确匹配激活状态。强调 useRoute(读取参数)与 useRouter(执行跳转)的区别,帮助开发者掌握单页应用路由的核心机制。

2301_79245606的博客 338

LangGraph == 循环结构的实现

这是静态约束,不会参与运行时校验。主要作用是提升代码可读性、通过静态类型检查,同时帮助 LangGraph。也就是说,是否继续重试,在当前实现中主要由大模型决定,而不是由程序逻辑强制保证。因此,如果模型在多次工具调用失败后选择停止重试并生成最终回答,运行图不会阻止它。函数,也不再需要调用 add_conditional_edges()只要大模型持续返回工具调用,流程就会不断回到 llm_node。的缩写,即“推理 + 行动”架构。,运行时只负责判断具体走哪一条路径。

每天都要努力学习哦~~ 346

Vue 前端开发 AI 对话页面:流式消息渲染、文件上传

关键点是不能手动设置 Content-Type 为 multipart/form-data,必须由浏览器自动生成带有 boundary 的请求头,否则后端无法解析。思路:将对象序列化为 JSON 字符串,作为 FormData 的一个普通字段(如 formData.append(‘payload’, JSON.stringify(data))),后端接收该字段后再反序列化。若上传大文件(>10MB),需实现独立的分片上传接口,在提交对话前先获取文件 id 或 url,再随文本发送引用。移除输入框的禁用态;

2402_85729970的博客 384

Flux 架构:一个单向数据流库是怎么跑起来的

状态只有一份 + 数据单向流 + reducer 是纯函数 + 中间件链可组合 + 视图层声明式绑定。这 30 行就是这套思想的最小完整样本:两次useStore订阅、一次拿链式 dispatch、四个按钮对应四种 action(其中一种是 thunk 形态)。

sun_weitao的博客 108

纯 Go 写的 JS 引擎,跑分超过了 C 语言的 QuickJS

moejs 是一个纯 Go 编写的高性能 JavaScript 运行时,专为 Go 程序中的插件沙箱场景设计。发布于 2026 年 11 月,由 new-api 维护者 Calcium-Ion 开发,相较 C 版 QuickJS 快 35%,内存占用仅 81 KiB,单次调用仅 6.9 微秒。支持快速复用运行时、零拷贝解析、安全沙箱与 TypeScript 直接编译,通过 test262 80971 个用例零失败。适合高并发插件系统,如 AI 网关钩子处理,已在实际场景中实现请求吞吐量提升 8.6 倍。仓库

前端之虎陈随易 189

vue3 markdown编辑框与压缩包文件上传及预览

el-input v-model="form.author" placeholder="作者/组织" maxlength="50" clearable /><el-select v-model="form.category" placeholder="请选择标签" class="full-width"><el-select v-model="form.license" placeholder="请选择" class="full-width">'编辑技能' : '新建技能' }}</div>

每一篇博客都是对自己技术的沉淀 172
上一篇: JavaScript Code Improver 中文语言包
下一篇: TabPage
SmartJavaer
博客等级 码龄21年 13粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值