我想用类"容器"更改每个div的文本。
我有一个函数test1,它会在单击一个按钮后调用。
此函数应使用函数test2的返回值更改文本。但文本不会改变。 alert(result)
显示了我期望的正确文字。我该如何解决这个问题?
<div class="container">Some text</div>
<div class="container">Some text</div>
<div class="container">Some text</div>
<div class="container">Some text</div>
<div class="container">Some text</div>
function test1() {
$( ".container" ).each(function() {
$( ".container" ).text(test2('MyValue'));
})
}
function test2(value) {
$.getJSON("ajax.php", {
value: value
}, function(result) {
alert(result);
return result;
})
}
答案 0 :(得分:1)
在AJAX完成之前,您无法更改文本。Promises是一个很好的解决方案..
<div class="container">Some text</div>
<div class="container">Some text</div>
<div class="container">Some text</div>
<div class="container">Some text</div>
<div class="container">Some text</div>
function test1() {
test2('myValue').then(res=>$( ".container" ).text(res))
}
function test2(value) {
return new Promise(done=>
$.getJSON("ajax.php", {
value: value
}, function(result) {
done(result);
}));
}