为什么我的onload函数不能在JavaScript中工作?
我正在开发api以生成随机引用。它的工作很好,但我想生成一个随机报价尽快页面加载为什么我的onload函数不能在JavaScript中工作?,javascript,Javascript,我正在开发api以生成随机引用。它的工作很好,但我想生成一个随机报价尽快页面加载 document.getElementById('load').addEventListener('onload', loadData); document.getElementById('getQuote').addEventListener('click', loadData); function loadData() { const xhr = new XMLHttpRequest(
document.getElementById('load').addEventListener('onload', loadData);
document.getElementById('getQuote').addEventListener('click', loadData);
function loadData() {
const xhr = new XMLHttpRequest();
xhr.open('GET', 'https://talaikis.com/api/quotes/', true);
xhr.onload = function() {
if (this.status === 200) {
const data = JSON.parse(this.responseText);
document.getElementById('quote-message').innerHTML = `<h1>${data[0].quote}</h1>`;
document.getElementById('author').innerHTML = `<h3>${data[0].author}</h3>`;
}
}
xhr.send();
}
document.getElementById('load').addEventListener('onload',loadData);
document.getElementById('getQuote')。addEventListener('click',loadData);
函数loadData(){
const xhr=new XMLHttpRequest();
xhr.open('GET','https://talaikis.com/api/quotes/",对),;
xhr.onload=函数(){
如果(this.status==200){
const data=JSON.parse(this.responseText);
document.getElementById('quote-message')。innerHTML=`${data[0]。quote}`;
document.getElementById('author')。innerHTML=`${data[0]。author}`;
}
}
xhr.send();
}
我想您的问题是,为什么加载页面时函数不工作,请尝试将函数loadData封装在$(document.ready()
中。加载完页面后,将执行$(document).ready()
中包含的函数
编辑:更正未加载,准备就绪
谢谢。根据
使用window.onload
在文档加载时启动脚本:
window.onload = loadData;
您的完整代码将如下所示
window.onload = loadData;
document.getElementById('getQuote').addEventListener('click', loadData);
function loadData() {
// [...]
}
addEventListener('load'
…not onload-另外,您是否有ID=load
的元素?将loadData
函数定义放在&文档上方。addEventListener('onload',loadData)
将执行以下操作:trick@VeteranLK函数
JS中的声明被提升(移动到范围顶部),因此在定义函数名之前使用函数名是完全有效的。是的,我的html代码中有ID=load。@Jaromandax它是什么类型的元素?什么元素有一个load
事件?也就是说,你希望什么时候触发这个load
事件?文档没有一个load属性,你可以像那样使用它进行更正,这需要jquery
-问题中没有要求它。谢谢。它起作用了。但是我有一些疑问。为什么我的addeventlistener不起作用?因为onload
事件不会发生在id=load
元素上,而是发生在window
元素上。因此,您必须使用window.addeventlistener('load',Data);
(注意语法是load
,而不是onload
)