2

start()関数を使用してロードする複数の関数を持つJavascript関数が呼び出されました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+の使用中に発生します)[ツール]メニューに移動し、[互換表示設定]オプションを選択します。これにより、「互換表示を使用してすべてのWebサイトを表示する」機能をオフにできるウィンドウが開きます。

于 2013-01-28T04:02:51.860 に答える