Android点击事件onclick用法:onclick事件发生没有点击事件实际发生-js

伙计们,我是一个完整的新手,所以我肯定会为一个非常基本的问题道歉。

我有一个链接到包含多个按钮的 html 文件的 javascript 文件。一个这样的按钮的 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;

在 html 中:

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

解决方案:

document.getElementById('sortEnrol').onclick = sortByName(arrEnrolments);

不是注册 eventListener,而是执行 sortByName 函数。您需要一个闭包,如下所示:

document.getElementById('sortEnrol').onclick = function () { sortByName(arrEnrolments); };

一些评论:

在 init 函数中创建了 logarray 变量,但从未使用过

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

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(597)
Android环境变量:未能找到 'ANDROID_HOME' 环境变量
上一篇
辽健康辽医疗小程序:如何在广义加权残值法中施加边界条件(切比雪夫· 伽辽金模态形式)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(73条)