HTML div
<div id="viz"></div>
的javascript
<script type="text/javascript">
var gg=document.getElementById("viz");
function ex(nn) {
var zzz;
d3.xml("./xyzfiles/svgs/s"+nn+".svg", "image/svg+xml", function(xml) {
zzz=xml.documentElement;
});
if(q==null) {
alert("no child");
} else {
alert("has child");
}
gg.appendChild(zzz);
}
ex(1);
ex(6);
</script>
我有svg文件s1.svg,s2.svg ....当我使用alert()函数时加载但当我删除时如下
<script type="text/javascript">
var gg=document.getElementById("viz");
function ex(nn) {
var zzz;
d3.xml("./xyzfiles/svgs/s"+nn+".svg", "image/svg+xml", function(xml) {
zzz=xml.documentElement;
});
gg.appendChild(zzz);
}
ex(1);
ex(6);
</script>
ex(1),ex(6)没有被执行。为什么它发生了sir并且有没有任何静默方式刷新DOM以便ex()可以在没有alert()的情况下执行。
答案 0 :(得分:1)
您在zzz
来电之前附加d3.xml
。你需要在回调中做到这一点。警报导致浏览器停止,因此异步调用在追加时已完成。使用console.log
代替alert
会提供线索。
顺便问一下,q
应该是什么?
关于这个话题,有很多关于SO的问题。请参阅How do I return the response from an asynchronous call?,Variables set during $.getJSON function only accessible within function,Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference,Get data from fs.readFile。