Javascript onclick事件正在发生而不单击事件实际发生-js

Javascript onclick事件正在发生而不单击事件实际发生-js,javascript,html,onclick,getelementbyid,Javascript,Html,Onclick,Getelementbyid,乡亲们 我是一个完全的新手,所以我敢肯定,对于这将是一个非常基本的问题,请提前道歉 我有一个javascript文件,它链接到一个包含许多按钮的html文件。其中一个按钮的onclick事件似乎完全绕过onlick事件,并在页面打开时触发。有什么想法吗?很抱歉问什么是真正基本的东西,但我已经记不清我花了多少时间试图让它只在“点击”事件上工作 在java中: var arrEnrolments=[];//global array function init() { populateEnro

乡亲们 我是一个完全的新手,所以我敢肯定,对于这将是一个非常基本的问题,请提前道歉

我有一个javascript文件,它链接到一个包含许多按钮的html文件。其中一个按钮的onclick事件似乎完全绕过onlick事件,并在页面打开时触发。有什么想法吗?很抱歉问什么是真正基本的东西,但我已经记不清我花了多少时间试图让它只在“点击”事件上工作

在java中:

var arrEnrolments=[];//global array
function init() {
    populateEnrolments();
    var enrolArray=arrEnrolments

    document.getElementById("resetEnrol").onclick=resetEnrolments;
    document.getElementById("listEnrol").onclick=listAllEnrols;
   document.getElementById("sortEnrol").onclick=sortByName(arrEnrolments); 
}

function populateEnrolments(){
arrEnrolments=[];
var stuOne={id:1234567, name: "Jones, Brigit", mark: null, grade: ""};
var stuTwo={id:1234566, name: "Somers, Tom ", mark: null, grade: ""};
var stuThree={id:1222445, name: "Lee, Vera", mark: null, grade: ""};
var stuFour={id:1220123, name: "Crawford, Anne", mark: null, grade: ""};
var stuFive={id:1244444, name: "Wu, Russel", mark: null, grade: ""};
var stuSix={id:1238899, name: "Shaw, Boris", mark: null, grade: ""};
var stuSeven={id:1237799, name: "Wilson, Terri", mark: null, grade: ""};
arrEnrolments=[stuOne, stuTwo, stuThree, stuFour, stuFive, stuSix, stuSeven];   
}

function sortByName(searchArray) {

var pos=0;
var count, temp;

do{
    var msgOut="Student records sorted into Name ascending sequence";
    count=0;
    for(var pos=0; pos<searchArray.length-1; pos++){
        if(searchArray[pos].name>searchArray[pos+1].name){
            temp=searchArray[pos];
            searchArray[pos]=searchArray[pos+1];
            searchArray[pos+1]=temp;
            count++
        }//end if
    }//end for
} while (count>0)//end do

addToOutput(msgOut);
}

function addToOutput(output){
var msgOut=output;
document.getElementById("output").innerHTML=msgOut;

}

window.onload = init;
var arrEnrolments=[]//全局数组
函数init(){
人口解决方案();
var enrolArray=欠款
document.getElementById(“resetEnrol”).onclick=resetEnrol;
document.getElementById(“listEnrol”).onclick=listAllEnrols;
document.getElementById(“sortEnrol”).onclick=sortByName(arrEnrolments);
}
函数populateEnrolments(){
欠款=[];
var stuOne={id:1234567,名称:“琼斯,布里吉特”,标记:空,等级:'};
var stuTwo={id:1234566,name:“Somers,Tom”,mark:null,grade:“};
var stuthore={id:1222445,name:“Lee,Vera”,mark:null,grade:“};
var stuFour={id:1220123,名称:“Crawford,Anne”,标记:null,等级:'};
var Stuveive={id:1244444,名称:“Wu,Russel”,标记:null,等级:'};
var stuSix={id:1238899,名称:“Shaw,Boris”,标记:null,等级:'};
var stuSeven={id:1237799,名称:“Wilson,Terri”,标记:null,等级:'};
欠款=[stuOne,stuTwo,stuTwo,stuTwo,stuTwo,stuTwo,stuTwo,stuTwo,stuTwo,stuTwo,stuTwo,stuTwo,stuTwo,St;
}
函数sortByName(searchArray){
var-pos=0;
变量计数,温度;
做{
var msgOut=“按名称升序排序的学生记录”;
计数=0;
对于(var pos=0;possearchArray[pos+1]。名称){
temp=搜索数组[pos];
searchArray[pos]=searchArray[pos+1];
searchArray[pos+1]=temp;
计数++
}//如果结束
}//结束
}while(count>0)//结束do
addToOutput(msgOut);
}
函数addToOutput(输出){
var msgOut=输出;
document.getElementById(“输出”).innerHTML=msgOut;
}
window.onload=init;
在html中:

<body>
<header>
<h1>Tracking Student Enrolments and Completions<h1>
</header>
<article class="flex-container">
<section class="flex-item"> 
<h2>Enrolments</h2>
<button type="button" id="resetEnrol">Reset Enrolment List</button>
<button type="button" id="listEnrol">List All Enrolments</button>
<button type="button" id="sortEnrol">Sort Enrolments by Name</button><br/>
</article>
</body>

跟踪学生注册和完成情况
入学人数
重新设置报名名单
列出所有入学人数
按姓名对注册进行排序
解决方案:

document.getElementById('sortEnrol').onclick=sortByName(arrenrol)

不是注册eventListener,而是执行sortByName函数。 您需要在此处完成以下操作:

document.getElementById('sortEnrol')。onclick=function(){
sortByName(欠款解决方案);
};

几点意见:

  • enrolArray变量是在init函数中创建的,但从未使用过

  • pos变量在sortByName函数中定义了两次


非常感谢您!非常感谢你的帮助!感谢您对enrolArray的反馈(我创建它是为了绕过onclick的问题,忘记删除),同时也修复了pos。