mein button.onclick funktioniert nicht beim ersten Klick, aber es funktioniert bei der zweiten. Ich habe eine Warnung verwendet, um zu überprüfen, und sogar die Warnung funktioniert nicht auf den ersten Klick, funktioniert aber auf den zweiten Klick. hier ist der Link zur App, falls Sie es brauchen - http://silentarrowz.imad.hasura-app.io/news können Sie mir sagen, was los ist ?? Hier ist der CodeSchaltfläche onclick funktioniert nicht beim ersten Klick
window.onclick = function() {
var displayNews = document.getElementById('currentNews');
var newsButton = document.getElementById('getnews');
newsButton.onclick = function() {
alert('the button is clicked');
var newsxr = new XMLHttpRequest();
newsxr.onreadystatechange = function() {
if (newsxr.readyState === XMLHttpRequest.DONE && newsxr.status === 200) {
var currentNews = JSON.parse(newsxr.responseText);
var currentArticles = currentNews['articles'];
var numberArticles = currentNews['articles'].length;
var newsDisplay = '';
var author;
var title;
var description;
var urlToImage;
for (var i = 0; i < numberArticles; i++) {
author = currentArticles[i]['author'];
title = currentArticles[i]['title'];
description = currentArticles[i]['description'];
urlToImage = currentArticles[i]['urlToImage'];
newsDisplay = newsDisplay + "<p>" + "<span class='title'>" + title + "</span>" + "<br>" + description + "<br>" + "<img src='" + urlToImage +
"'</img>" + "</p>";
}
alert('displaying the news now');
console.log('current news is : ', currentNews);
displayNews.innerHTML = newsDisplay;
}
}; //on state change
newsxr.open('GET', 'https://newsapi.org/v1/articles?source=national-geographic&sortBy=top&apiKey=1af110441a8e4f72925f78344e58c2a4', true);
newsxr.send(null);
}; //button onclick function ends
}; // window onclick function ends
Sie die ganze Sache in 'gewickelt window.onclick' so müssen Sie das Fenster mindestens einmal klicken, damit es funktioniert, und es hält nur auf die Arbeit, jedes Mal, Wenn Sie auf etwas klicken, fügen Sie weitere Ereignisbehandlungsroutinen hinzu. – adeneo
@adeneo, Sie sind teilweise richtig. Mit der Eigenschaft "newsbutton.onclick" kann nur ein Ereignishandler hinzugefügt werden. Daher fügen die nachfolgenden Änderungen an dieser Eigenschaft keine zusätzlichen Handler hinzu; Der ältere Handler wird ersetzt. – Makyen
@Makyen - das ist richtig, denke ich bin gewohnt, 'addEventListener'. Es ist immer noch eine schlechte Idee. – adeneo