Javascript没有alert()就不能工作
Javascript does not work without alert()
我有一个运行良好的Javascript函数,直到我注释掉/或删除alert()
行。如果存在且有值,则计算最多30个字段的总和。
<input type="text" onblur="Calculatenettobrutto(1);">
JavaScript: function Calculatenettobrutto(n) {
var Feldnummer=n;
var nettowert,bruttowert;
var nettosumme, bruttosumme,neuenettosumme,neuebruttosumme;
var Wertfuer='Mehrwertsteuersatz'
//Mehrwertsteuer auslesen
var dataString = 'Name='+Wertfuer;
var thisObject = this;
this.wert=$.ajax({
type: "POST",
url: "ajax_get_Einstellungen.php",
data: dataString,
cache: false,
success: function(wert) {
nettowert = document.getElementById('Netto'+Feldnummer).value;
bruttowert = parseFloat(nettowert) * wert;
document.getElementById('Brutto'+Feldnummer).value=parseFloat(bruttowert);
return wert;
}
});
var nettosumme=0,bruttosumme=0, x=1;
while (x < 30) {
var Feldname='Netto'+x;
if ( document.getElementById('Netto'+x) ) {
//If field Netto+x exist then check if it has a value
var nettowert=document.getElementById('Netto'+x).value;
//if it has a value add values to nettosumme and bruttosumme
if (nettowert) {
nettosumme=parseFloat(nettosumme)+parseFloat(document.getElementById('Netto'+x).value);
//IF I COMMENT THIS OUT, I get a NAN in my Bruttosumme column
alert(nettosumme);
bruttosumme=parseFloat(bruttosumme)+parseFloat(document.getElementById('Brutto'+x).value);
}
}
x++;
}
document.getElementById('Nettosumme').value=parseFloat(nettosumme);
document.getElementById('Bruttosumme').value=parseFloat(bruttosumme);
}
我如何使它工作,即使alert()
线被删除?
问题是您做了一个异步ajax请求:
<input type="text" onblur="Calculatenettobrutto(1)" />
一旦用户离开该字段,就调用Calculatenettobrutto
。然后调用你的函数:
var Feldnummer = 1;
this.wert=$.ajax({
...
success: function(wert) {
...
nettowert = document.getElementById('Netto'+Feldnummer).value;
bruttowert = parseFloat(nettowert) * wert;
document.getElementById('Brutto'+Feldnummer).value=parseFloat(bruttowert);
}
});
//alert("Wait a little");
document.getElementById('Brutto'+Feldnummer).value <-- BANG
这里的问题如下:在ajax()中定义的函数是在ajax调用的结果从服务器返回时调用的,ajax()之后的代码立即执行。因此,您尝试在字段设置之前从该字段获取值。
当警报窗口可见时,脚本被挂起,ajax调用返回并执行"成功"代码,设置"Brutto…"的值。关闭警报后,代码被执行,现在"Brutto…"有了一个值。
最简单的解决方案可能是将求和函数移到success函数
相关文章:
- 用javascript将script元素附加到头部;铬不能工作
- 为什么jQuery代码段在没有IFrame的情况下可以工作,而在有IFrame时却不能工作
- 为什么当async标志设置为false时,xmlhttprequest中的代码可以工作,而当它设置为true时却不能工作
- 我怎么能把它做成这样一个图像就不能拖动了
- 引导程序's的javascript在本地工作,但在部署到服务器时不能工作
- JQuery脚本没有'Don’我不能工作两次
- "npm运行构建:css"不能工作,而当我自己运行脚本时是可以的
- Caret函数没有'如果插入符号在最后一个位置,就不能正常工作
- ng样式在与的预标记中!重要的是不能工作
- jQuery没有Alert()就不能工作
- 事件在用AJAX更新之后就不能工作了
- 将route从app.js移到route.js, app就不能工作了
- Javascript没有alert()就不能工作
- Javascript在渲染视图之后就不能工作了
- 一旦涉及代理,Javascript就不能正常工作
- jquery .html()结束后,绑定就不能工作了
- 如果我点击一个按钮来打开一个弹出式表单,代码就不能在IE6上工作
- Javascript替换子字符串不'如果字符串重复,就不能正常工作
- 为什么脚本不写在元素本身上就不能工作
- 从昨天开始,我用于检索最后一条推文日期的代码就不能正常工作了