2

我有调用的 Javascript 函数start(),它们有多个函数可以使用window.onload函数加载。但是,我有以下独立工作的功能。但是,如果我把它写在里面window.onload,那么它就行不通了。

//START()     
window.onload = start;

function start()
{
    loadValues();
    showState4();
}

独立工作的代码很好。

window.onload=function(){
    document.getElementById("src2TargetAll").onclick = function() {
        sureTransfer(document.getElementById("net"), document.getElementById("target"), true);
    };
};

我尝试重新编写代码如下,window.onload但它不起作用。window.onload如何在单个函数中重写以下代码。

window.onload = start;

function start()
{
    loadValues();  //loadValues() and showState4() works fine without sendValues().
    showState4();
    sendValuess();  // tested this sendValues without above two functions and that also works fine. but three functions in window.onload creates a problem
}


function sendValuess(){
    document.getElementById("src2TargetAll").onclick = function() {
        sureTransfer(document.getElementById("net"), document.getElementById("target"), true);
    };
};

sendValues()添加到后我得到window.onload的错误如下:

STOP RUNNING THIS SCRIPT?
A SCRIPT ON THIS PAGE IS CAUSING YOUR WEB BROWSER TO RUN SLOWLY. IF IT CONTINUES TO RUN, YOUR COMPUTER MIGHT BECOME UNRESPONSIVE. 

以下是试图帮助我的人要求的 loadValues 和其他功能的代码:

function showState4(){
        var me = document.getElementById('stk1');
         var values = ''; //populate selected options
         for (var i=0; i<me.length; i++)
             if (me.options[i].selected)
                 values += me.options[i].value + ',';
         values = values.substring(0, values.length-1);
         var selected=[values];

         var temp= new Array();
            temp = values.split(",");

         var del = document.getElementById('StakeHolder');

         for(var i=0; i<del.length; i++)
           {
             for(var j=0;j<temp.length;j++)
              {  

                  if(temp[j] == del.options[i].value)
                    {

                       del.options[i].selected = true;
                    }
               }  
           }
         }

     function loadValues()
     {
    var  RD_REQ_RT_ID = "<%=RD_REQ_RT_ID %>";
    if(RD_REQ_RT_ID=="null")
     {
    document.getElementById('requestType').value="";
     }
     else{
    document.getElementById('requestType').value=RD_REQ_RT_ID;
    }
    )


_

     function sureTransfer(from, to, all) {
    if ( from.getElementsByTagName && to.appendChild ) {
        while ( getCount(from, !all) > 0 ) {
            transfer(from, to, all);
        }
    }
     }
     function getCount(target, isSelected) {
    var options = target.getElementsByTagName("option");
    if ( !isSelected ) {
        return options.length;
    }
    var count = 0;
    for ( i = 0; i < options.length; i++ ) {
        if ( isSelected && options[i].selected ) {
            count++;
        }
    }
    return count;
    }
    function transfer(from, to, all) {
    if ( from.getElementsByTagName && to.appendChild ) {
        var options = from.getElementsByTagName("option");
        for ( i = 0; i < options.length; i++ ) {
            if ( all ) {
                to.appendChild(options[i]);
            } else {
                if ( options[i].selected ) {
                    to.appendChild(options[i]);
                }
            }
        }
    }
     }

如何将 sendValuess() 添加到 window.onload 没有任何问题?

4

2 回答 2

1
window.addEventListener will not work in IE so use window.attachEvent

You can do something like this

function fun1(){
    // do something
}

function fun2(){
    // do something
}


var addFunctionOnWindowLoad = function(callback){
      if(window.addEventListener){
          window.addEventListener('load',callback,false);
      }else{
          window.attachEvent('onload',callback);
      }
}

addFunctionOnWindowLoad(fun1);
addFunctionOnWindowLoad(fun2);
于 2015-04-10T09:10:46.170 回答
0

错误:

STOP RUNNING THIS SCRIPT?
A SCRIPT ON THIS PAGE IS CAUSING YOUR WEB BROWSER TO RUN SLOWLY.
IF IT CONTINUES TO RUN, YOUR COMPUTER MIGHT BECOME UNRESPONSIVE.

它发生在 IE 在兼容模式下运行时。(在使用 FB 和 Google+ 时发生)转到“工具”菜单并选择“兼容性视图设置”选项。这将打开一个窗口,您可以在其中关闭“使用兼容性视图显示所有网站”功能。

于 2013-01-28T04:02:51.860 回答