Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在没有window.onload包装器的情况下运行函数_Javascript_Function_Canvas_Charts - Fatal编程技术网

Javascript 如何在没有window.onload包装器的情况下运行函数

Javascript 如何在没有window.onload包装器的情况下运行函数,javascript,function,canvas,charts,Javascript,Function,Canvas,Charts,有没有办法在没有“window.onload”的情况下运行下面的函数?我正在尝试加载图表而不加载到身体中 window.onload = function() { var myPie = new Chart(document.getElementById("mycanvas_pie").getContext("2d")).Pie(pieData1,opts); } 如果在HTML中的mycanvas_pie之后调用此行(或加载包含此行的脚本),则不需要window.onload <ca

有没有办法在没有“window.onload”的情况下运行下面的函数?我正在尝试加载图表而不加载到身体中

window.onload = function() {

var myPie = new Chart(document.getElementById("mycanvas_pie").getContext("2d")).Pie(pieData1,opts);
}

如果在HTML中的mycanvas_pie之后调用此行(或加载包含此行的脚本),则不需要window.onload

<canvas id="mycanvas_pie"></canvas>
<script>
    var myPie = new Chart(document.getElementById("mycanvas_pie").getContext("2d")).Pie(pieData1,opts);
</script>

var myPie=新图表(document.getElementById(“mycanvas_pie”).getContext(“2d”)).pie(pieData1,opts);

将起作用。

因为您的代码试图通过id(“mycanvas\u pie”)获取DOM元素,所以必须在创建DOM后执行。否则,它将不起作用,因为您无法获取不存在的元素。您可以使用自调用函数,该函数将在创建DOM时调用

(function(){
    var myPie = new Chart(document.getElementById("mycanvas_pie").getContext("2d")).Pie(pieData1,opts);
})();
就像这样执行代码:

$(document).ready(function(){
    // some code
});

请解释一下你想要完成什么。出于某种原因,这种技术是一个问题吗?我正在使用XHR加载一个包含画布的页面。由于页面将在XHR页面请求完成之前加载,因此我无法使用window.onload我正在使用XHR加载一个具有画布的页面,因此我想删除“window.onload”,因为在整个页面完成加载之前,页面不会完成加载。我正在使用XHR加载具有“var myPie=…”的页面是否必须将其附加到readyState函数中,或者是否有其他方法加载新图表?您可以将该行打包到命名函数(例如AjaxPageLoad)中,然后在onreadystatechange中调用此函数。第二个选项是让行进入window.onload和readystatechange调用
window.onload()。但别忘了第二个变量只调用最后分配的onload函数。如果您从另一个脚本(或插件)逐个事件重写onload事件,它将不起作用。因为变量1比变量2好。