在JavaScript中,我想添加两个数字变量:film_cost
和delivery_cost
,并将它们显示在警告框中。这些变量属于两个不同的函数。
function getcost()
{
var cost = document.getElementsByName("format");
var len = cost.length
for (i=0;i<len;i++)
{
if(cost[i].checked)
{
document.getElementById("data2").innerHTML = '£'+cost[i].value;
var film_cost = cost[i].value;
}
}
}
function add_delivery()
{
var delivery_cost = document.getElementsByName("delivery");
var len = delivery_cost.length
for (i=0;i<len;i++)
{
if(delivery_cost[i].checked)
{
var dvd_delivery = delivery_cost[i].value;
var total = dvd_delivery+film_cost;
alert(total);
}
}
}
HTML:
Delivery
<input type="radio" name="delivery"
onClick="add_delivery();" value="3.20">First Class<br/>
<input type="radio" name="delivery"
onClick="add_delivery();" value="4.20">Express Delivery<br/>
电影类型:
<input type="radio" name="format" value="20"
onClick="getcost();">Blu-ray + UV Copy<br/>
<input type="radio" name="format" value="14.50"
onClick="getcost();">DVD + UV Copy<br/>
<input type="radio" name="format" value="30"
onClick="getcost();">Limited Edition DVD + UV Copy<br/>
<input type="radio" name="format" value="13"
onClick="getcost();">Download<br/>
我该怎么做?
答案 0 :(得分:4)
您需要访问add_delivery()函数中的film_cost变量。
我建议做这样的事情:
function getcost()
{
var cost = document.getElementsByName("format");
var len = cost.length;
var film_cost = 0;
for (i=0;i<len;i++)
{
if(cost[i].checked)
{
document.getElementById("data2").innerHTML = '£'+cost[i].value;
film_cost = parseFloat(cost[i].value);
}
}
return film_cost;
}
function add_delivery()
{
var delivery_cost = document.getElementsByName("delivery");
var len = delivery_cost.length;
for (i=0;i<len;i++)
{
if(delivery_cost[i].checked)
{
var dvd_delivery = parseFloat(delivery_cost[i].value);
var total = dvd_delivery + getcost();
alert(total);
}
}
}
在此解决方案中,变量film_cost将默认为0,但如果选中一个框,则会更改。 add_delivery()
调用getcost()
,因此变量dvd_delivery
和film_cost
将一起添加到变量total
中。
如果我们能看到html会很有帮助,但我认为这会对你有帮助。
最后一个建议是规范你的功能命名方式。如果你命名它们,它会帮助你(和其他人)阅读你的代码:
getCost()
和addDelivery()
或
get_cost()
和add_delivery()
编辑:添加了parseFloat()
以将film_cost
和dvd_delivery
转换为浮点广告,以便他们可以在警报中一起添加。
答案 1 :(得分:0)
film_cost 未在第二个函数中定义。
答案 2 :(得分:0)
变量film_cost的范围仅在第一个函数内;因此,当调用第二个函数时,film_cost已经“死了”。
更简单的问题解决方法就是:
var film_cost;
function getcost()
{
var cost = document.getElementsByName("format");
var len = cost.length
for (i=0;i<len;i++)
{
if(cost[i].checked)
{
document.getElementById("data2").innerHTML = '£'+cost[i].value;
film_cost = cost[i].value;
}
}
}
function add_delivery()
{
var delivery_cost = document.getElementsByName("delivery");
var len = delivery_cost.length
for (i=0;i<len;i++)
{
if(delivery_cost[i].checked)
{
var dvd_delivery = delivery_cost[i].value;
var total = dvd_delivery+film_cost;
alert(total);
}
}
}
我只更改了第一行和if(cost [i] .checked)正文。