2015-05-04 37 views
2

我想執行這段代碼,但由於某種原因,我無法弄清楚RoundRobin函數將執行onload而不是onclick。我試圖刪除window.onload或將其替換爲document.onload。我只想要這條線document.getElementById("tableButton").onclick = RoundRobin(teamsIn);等待onclick觸發器。Javascript不等onclick

var selectedTeams = []; 

window.onload = function() { 
// JavaScript Document 



// add selected teams to array 

var teamList = document.getElementById("teamDropdown"); 
teamList.onchange = function addTeams() { 


    if (selectedTeams.length > 7) { 

     alert("no more teams") 

    } else { 
     var county = document.getElementById("teamDropdown").value; 
     selectedTeams.push(county); 
    } 

    alert("counties selected are: " + selectedTeams); 
} 



var teamsIn = 0; 
teamsIn = selectedTeams.length; 

document.getElementById("tableButton").onclick = RoundRobin(teamsIn); 

// slideshow. 
var imageArray = new Array(); 
imageArray[0] = new Image() 
imageArray[0].src = "Sponsors/aib.png" 

imageArray[1] = new Image() 
imageArray[1].src = "Sponsors/centra.jpg" 

imageArray[2] = new Image() 
imageArray[2].src = "Sponsors/eircom.png" 

imageArray[3] = new Image() 
imageArray[3].src = "Sponsors/etihad.png" 

imageArray[4] = new Image() 
imageArray[4].src = "Sponsors/liberty.jpg" 

imageArray[5] = new Image() 
imageArray[5].src = "Sponsors/supervalu.png" 


var step = 0; 

function slideShow() { 
    document.getElementById('slideshow').src = imageArray[step].src 
    if (step < 5) 
     step++ 
     else 
      step = 0 
    setTimeout("slideShow()", 4000) 
} 



function RoundRobin(teams) { 

    alert(teams); 
    var i; 
    var ret = ""; 
    var round; 
    var numplayers = 0; 
    numplayers = parseInt(teams) + parseInt(teams % 2); 
    numplayers = parseInt(numplayers); 
    alert(numplayers); 
    var a = new Array(numplayers - 1); 
    var alength = a.length; 
    for (var x = 0; x < (numplayers); x++) { 
     a[x] = "Team " + (x + 1); 
    } 
    if (numplayers != parseInt(teams)) { 
     a[alength] = "BYE"; 
    } 
    var pos; 
    var pos2; 
    ret = "----- ROUND #1-----<br />" 
    for (var r1a = 0; r1a < (numplayers/2); r1a++) { 
     ret += a[r1a] + " vs. " + a[alength - r1a] + "<br />" 
    } 
    for (round = 2; round < alength + 1; round++) { 
     ret += "<br /><br />----- ROUND #" + round + "-----<br />" 
     ret += a[0] + " vs. " + a[alength - (round - 1)] + "<br />" 

     for (i = 2; i < (numplayers/2) + 1; i++) { 
      pos = (i + (round - 2)) 
      if (pos >= alength) { 
       pos = ((alength - pos)) * -1 
      } else { 
       pos = (i + (round - 2)) 
      } 

      pos2 = (pos - (round - 2)) - round 
      if (pos2 > 0) { 
       pos2 = (alength - pos2) * -1 
      } 

      if (pos2 < (alength * -1)) { 
       pos2 += alength 
      } 
      ret += a[(alength + pos2)] 
      ret += " vs. " + a[(alength - pos)] + "<br />" 
     } 
    } 
    var text = document.getElementById('fixtures'); 
    text.innerHTML = ret; 
    return ret 
} 

// round robin format 

} 
+1

您正在執行'RoundRobin'功能,'ROUNDROBIN(teamsIn)',並將其分配給'onclick'。 –

+0

任何控制檯錯誤? – Lal

回答

6

發生了什麼事是你調用的函數,那麼你的返回值assing到onclick財產。要使事件處理程序正常工作,您需要爲該屬性分配一個函數。

包裹在一個函數表達式電話:

document.getElementById("tableButton").onclick = function(){ 
    RoundRobin(teamsIn); 
}; 
+0

謝謝,但功能仍然沒有按照它應該的方式工作。 array.length不起作用。我不知道爲什麼,但警報仍然說0,即使他們應該有8支隊伍。我知道它不是你的問題,我會弄明白的。 – nedduff

+0

@nedduff:您在開始處設置'teamsIn = selectedTeams.length;',但當'selectedTeams'發生變化時您不更新變量。也許你想在調用'RoundRobin'時使用'selectedTeams.length'。 – Guffa