2015-05-04 39 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