Javascript 除非调用alert(),否则不会设置异步回调中设置的值?
HTML分区Javascript 除非调用alert(),否则不会设置异步回调中设置的值?,javascript,html,asynchronous,d3.js,Javascript,Html,Asynchronous,D3.js,HTML分区 <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
<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>
var gg=document.getElementById(“viz”);
函数ex(nn){
var zzz;
d3.xml(“./xyzfiles/svgs/s”+nn+“.svg”,“image/svg+xml”,函数(xml){
zzz=xml.documentElement;
});
if(q==null){
警惕(“无子女”);
}否则{
警惕(“有孩子”);
}
gg.appendChild(zzz);
}
ex(1);
ex(6);
我有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>
var gg=document.getElementById(“viz”);
函数ex(nn){
var zzz;
d3.xml(“./xyzfiles/svgs/s”+nn+“.svg”,“image/svg+xml”,函数(xml){
zzz=xml.documentElement;
});
gg.appendChild(zzz);
}
ex(1);
ex(6);
ex(1),ex(6)没有被执行。为什么会发生这种情况,先生,是否有任何静默的方法来刷新DOM,以便ex()可以在没有警报的情况下执行()。在
d3.xml
调用返回之前,您正在追加zzz
。您需要在回调中执行此操作。此警报导致浏览器停止,因此异步调用在追加时已完成。使用console.log
而不是alert
会提供线索
顺便问一下,q
应该用于什么
关于这个话题,有很多问题。请参阅,,.solved sir@torazaburosorry sir我想删除以前的子级(如果有)并加载新的svg。最简单的方法可能是
gg.deleteChild(gg.firstChild)
。