JS脚本在body中加载(<body onload="laode()">),脚本如下:
function load() {    
    var objCurrencyName = getCookie("currency");
    if (objCurrencyName != null) {
        //设置当前显示的币种
        var objSpan = document.getElementsByTagName("span");
        for (var i = 0; i < objSpan.length; i++) {
            //设置下拉框默认项
            var objSelect = document.getElementById("Currency");
            for (var i = 0; i < objSelect.options.length; i++) {
                if (objSelect.options[i].value == objCurrencyName) {
                    objSelect.options[i].setAttribute("selected", "selected");
                }
            }
        
            if (objSpan[i].name != null) {
                if (objSpan[i].name == "price_" + objCurrencyName || objSpan[i].name == "sale_" + objCurrencyName)
                    objSpan[i].style.display = "block";
                else// if (objSpan[i].name.indexOf("price_") || objSpan[i].name.indexOf("sale_"))
                    objSpan[i].style.display = "none";
            }
        }
    }
}在页面加载后,会出现:停止运行此脚本吗?此页面上的脚本造成Web浏览器运行速度减慢。如果继续运行,您的计算将可能停止响应。这是为什么呢?是JS代码有问题吗?

解决方案 »

  1.   

    忘写getCookie方法了
    //**********************************
    //读取Cookie
    //**********************************
    function getCookie(name) {
        var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
        if (arr != null) return unescape(arr[2]); return null;
    }//**********************************
    //设置Cookie
    //**********************************
    function SetCookie(name, value) {
        var Days = 30; //此 cookie 将被保存 30 天
        var exp = new Date();    //new Date("December 31, 9998");
        exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
        document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString();
    }
      

  2.   


    function load() {   
      var objCurrencyName = getCookie("currency");
      if (objCurrencyName != null) {
         //设置下拉框默认项
         var objSelect = document.getElementById("Currency");
        for (var i = 0; i < objSelect.options.length; i++) {
           if (objSelect.options[i].value == objCurrencyName) {
              objSelect.options[i].setAttribute("selected", "selected");
           }
        }  //设置当前显示的币种
         var objSpan = document.getElementsByTagName("span");
        for (var i = 0; i < objSpan.length; i++) {
        
           if (objSpan[i].name != null) {
               if (objSpan[i].name == "price_" + objCurrencyName || objSpan[i].name == "sale_" + objCurrencyName)
               objSpan[i].style.display = "block";
                else// if (objSpan[i].name.indexOf("price_") || objSpan[i].name.indexOf("sale_"))
               objSpan[i].style.display = "none";
            }
          }
        }
    }这样应该就对了
    首先你设置默认下拉框,放到你的SPAN循环中,本身就加重了负担,是不正确的。
    其次,你的SPAN循环中,默认下拉框的循环中也使用i,导致两个i错乱,可能死循环