Javascript变量未定义
由于某些原因,我根本无法定义变量“total” 我把它定义为74,但由于某种原因,它不想继续。。我做错了什么?提前谢谢Javascript变量未定义,javascript,jquery,Javascript,Jquery,由于某些原因,我根本无法定义变量“total” 我把它定义为74,但由于某种原因,它不想继续。。我做错了什么?提前谢谢 $(document).ready(function() { function getParameterByName(name) { name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); var regexS = "[\\?&]" + name + "=
$(document).ready(function() {
function getParameterByName(name)
{
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var regexS = "[\\?&]" + name + "=([^&#]*)";
var regex = new RegExp(regexS);
var results = regex.exec(window.location.search);
if(results == null)
return "";
else
return decodeURIComponent(results[1].replace(/\+/g, " "));
}
$(".tab-content").hide(); //Hide all content
$("ul.tabs li:first").addClass("active").show(); //Activate first tab
$(".tab-content:first").show(); //Show first tab content
$('.question-form-submit').click(function(e) {
e.preventDefault();
var activeTab = '#'+$(this).attr('name');
var activeClass = activeTab.substr(5);
$("ul.tabs li").removeClass("active");
$('ul li:nth-child('+activeClass+')').addClass("active"); //Add "active" class to selected tab
$(".tab-content").hide(); //Hide all tab content
$(activeTab).fadeIn(); //Fade in the active ID content
$('.meter-value').removeClass('meter-width');
switch (activeClass) {
case '2' :
$('.meter-value').attr('style', 'background-color: #9496c9; width: 46.5%;');
break;
case '3' :
$('.meter-value').attr('style', 'background-color: #9496c9; width: 67%;');
break;
case '4' :
$('.meter-value').attr('style', 'background-color: #9496c9; width: 100%;');
break;
}
return false;
});
$('.quantity, .init_cost').change(function() {
var row_id = $(this).attr('id');
var row_number = row_id.substr(9);
var item_cost = $('#cost_'+row_number).attr('value');
var item_quantity = $('#quantity_'+row_number).attr('value');
var final_cost = item_cost * item_quantity;
$('#final_cost_'+row_number).val(final_cost).formatCurrency();;
});
$('.row input').each(function(index) {
var row_id = $(this).attr('id');
var row_number = row_id.substr(9);
var item_cost = $('#cost_'+row_number).attr('value');
var item_quantity = $('#quantity_'+row_number).attr('value');
var final_cost = item_cost * item_quantity;
$('#final_cost_'+row_number).val(final_cost).formatCurrency();;
});
var total = 0;
$('.final_cost').each(function(index) {
var final_cost = $(this).attr('value').substr(1);
var total = total + final_cost;
console.log(total);
})
});
每个函数中的
total
与外部函数的阴影相同
一个简单的例子是:
除了阴影之外,你还必须考虑。由于内部var被提升到顶部,因此内部功能大致相当于:
function()
{
var total = undefined;
console.log("total 2: " + total);
total = total + 3;
console.log("total 3: " + total);
}
在这种情况下,我认为您根本不需要内部
var
关键字。在其他情况下,您可以使用不同的变量名。行var total=total+final\u cost代码>隐藏行var total=0的外部声明代码>每次循环时,您都在重新定义总计
$('.final_cost').each(function(index) {
var final_cost = $(this).attr('value').substr(1);
var total = total + final_cost;
console.log(total);
})
为什么不试试这个
$('.final_cost').each(function(index) {
var final_cost = $(this).attr('value').substr(1);
total = total + final_cost;
console.log(total);
})
这是因为您声明了两次变量(每次编写var total
时,它都会被重新声明。因此,您在“final_cost”函数外有一个变量,在函数内有一个变量,它被设置为total from outside+final_cost。因此,实际上,您总是记录final_cost的值
只要写下total=total+final_cost;
,它就会起作用。尝试在总计之前删除第二个var
total = total + final_cost;
语法错误,正在终止脚本:
$('#final_cost_'+row_number).val(final_cost).formatCurrency();;
^--- extra ;
下次,请检查浏览器控制台(FF/Chrome中的shift-ctrl-J)是否有错误。类似的情况会立即报告。我会替换该行:
var total = total + final_cost;
与:
对此答案不确定,但请尝试首先使用默认值(如0)定义变量total,然后使用total+final_cost操作
var total = 0;
total += final_cost;
这是为什么?当您在没有默认值的情况下声明总计时,该值将是“未定义”的,因此javascript将表示以下内容:
var total = "undefined" + final_cost;
我想这就是错误所在。这篇文章中的代码太多,而且没有行号,所以不容易看出你在说什么。如果我能在所有这些代码中找到total
,我不认为额外的分号会导致JS出现问题
var total = 0;
total += final_cost;
var total = "undefined" + final_cost;