Событие onclick происходит без события клика - js - PullRequest
0 голосов
/ 10 ноября 2018

Folks Я полный новичок, поэтому заранее прошу прощения за очень простой вопрос, я уверен.

У меня есть файл javascript, связанный с html-файлом, который содержит несколько кнопок. Кажется, что событие onclick для одной такой кнопки полностью игнорирует событие onlick и запускается, как только открывается страница. Есть идеи? Извините за вопрос, что, вероятно, является чем-то действительно базовым, но я потерял счет часов, потраченных на то, чтобы заставить его работать только на событии "click" ....

в 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>
<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>

1 Ответ

0 голосов
/ 10 ноября 2018

Решение:

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

не регистрирует eventListener, а выполняет функцию sortByName. Вам нужно закрытие здесь следующим образом:

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

Несколько комментариев:

  • переменная enrolArray создается в функции init, но никогда не используется

  • переменная pos определяется дважды в функции sortByName

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...