我做了一个类似的帖子,但没有得到我的答案或我的代码工作,所以我决定使用切换功能到if功能,这就是它!
function taxesrepas(option){
var soustot;
var taxes;
var total;
var soustot;
if (option = getelementbyid("spaghetti"))
total += 9.62;
taxes += 0.67;
soustot +=8.95;
if (option = getelementbyid("lasagne"))
total += 10.70;
taxes += 0.75;
soustot += 9.95;
if (option = getelementbyid("salade"))
total += 6.30;
taxes += 0.45;
soustot += 5.95;
if (option =getelementbyid("escargot"))
total += 5.32;
taxes += 0.37;
soustot += 4.95;
document.getElementById("taxes").innerHTML = taxes;
document.getElementbyid("total").innerHTML = total;
document.getElementbyid("soustot").innerHTML = soustot;
}
该功能是从选择菜单中返回税金和总金额。 这是我希望我的结果被打印的地方,但它们只是不打印,我现在尝试使用开关,如果我真的疯了。
<h3 id="choix"></h3>
<h3 id="taxes" onclick= "taxesrepas(this.value)">taxes:</h3>
<h3 id="soustotal" onclick= "taxesrepas(this.value)">Sous-total:</h3>
<h3 id="total"onclick= "taxesrepas(this.value)">Total:</h3>
答案 0 :(得分:1)
您的代码中存在大量语法错误。我建议您浏览网页以获取基本教程。
- 您没有初始化变量:
醇>
var taxes;
var total;
var soustot;
调用total += 9.62
是一个错误,因为undefined
加上一个数字是NaN
- 如果条件
,您正在使用=
分配而不是==
比较 醇>
应为if(somevariable == somevalue)
而不是if(somevariable = somevalue)
- 您没有用花括号
附上if语句 醇>{}
if(somevariable == somevalue)
dosomething1(); // your if statement only includes up to this part
dosomething2(); // this line does not belong to the if statement
你应该:
if(somevariable == somevalue) { //opening here
dosomething1();
dosomething2();
} //closing here
到底是什么
getelementbyid("spaghetti")
。你在哪里定义了一个名为getelementbyid
的函数?它是
document.getElementById
而非document.getElementByid
(您使用了小 i )- 醇>
当您想要在选择了某个选项后更改这些元素时,您正在将
<h3>
元素视为按钮吗?
- 您要添加
onclick
属性。这应该是onClick
- 您正在将
this.value
传递给您的函数。您应该this.innerHTML
而不是
然而, 我强烈反对你做这样的事情。
如果要将侦听器添加到特定元素,请在JavaScript中执行。是的,添加onClick
内联事件是有效的,但它要求您将JS行为添加到HTML中。还有一个原因是在JS中编写事件可以使其很容易维护。
您可以尝试:
document.getElementById('total').onClick = somefunction
无论如何,这是我能想到的最少的。
据说您有<select>
包含您的选项,然后在选择选项时,您会看到价格。 (然后意大利面喷在你的鼻子上)。
var select = document.getElementById('optioncombo');
select.addEventListener('change', function() {
taxesrepas(select.value);
});
function taxesrepas(option) {
//you need to assign a starting value for your variables or you will get NaN when using +=
var soustot = 0,
taxes = 0,
total = 0,
soustot = 0;
//getelementbyid is not a function!!!
//if (option == getelementbyid("spaghetti")) {
if (option == "spaghetti") {
total += 9.62;
taxes += 0.67;
soustot += 8.95;
}
if (option == "lasagne") {
total += 10.70;
taxes += 0.75;
soustot += 9.95;
}
if (option == "salade") {
total += 6.30;
taxes += 0.45;
soustot += 5.95;
}
if (option == "escargot") {
total += 5.32;
taxes += 0.37;
soustot += 4.95;
}
document.getElementById("choix").innerHTML = option;
document.getElementById("taxes").innerHTML = taxes;
document.getElementById("total").innerHTML = total;
document.getElementById("soustotal").innerHTML = soustot;
}
&#13;
<label for="optioncombo">Product: </label><select id="optioncombo">
<option value="none"></option>
<option value="spaghetti">spaghetti</option>
<option value="lasagne">lasagne</option>
<option value="salade">salade</option>
<option value="escargot">escargot</option>
</select>
<h3>Your choice is:</h3><span id="choix"></span>
<h3>taxes:</h3><span id="taxes"></span>
<h3>Sous-total:</h3><span id="soustotal"></span>
<h3>Total:</h3><span id="total"></span>
&#13;
答案 1 :(得分:0)
我不确定我是否正确理解了您的问题,但我认为,您希望根据选择的菜肴选项进行一些计算。您的代码中存在多个严重错误,并且应该研究如何使用JavaScript进行编码。这是一些错误,你做了:
getelementbyid
与getElementById
不同。document.getElementById
≠getElementById
if
语句之后省略大括号是危险的。它始终只会影响即将推出的产品线。始终在if语句中使用花括号。在您的情况下,只进行了第一次计算。 (if(...) { ... }
)<h3>
元素没有value
,只有输入和广播框确实有value
。因此,您不能将此“选项”作为参数传递。+=
。否则,您只需使用=
=
无法比较任何内容。该运算符用于分配变量。您需要使用==
或更好===
。var soustot;
)而不初始化它(为其设置值),则其值为undefined
。您无法向undefined
添加号码。它将产生NaN
值(不是数字)。Math.round(1.643);
返回2
但不设置任何DOM属性。尽管如此,这里有一个有效的例子:
function taxesrepas() {
var soustot = 0;
var taxes = 0;
var total = 0;
var soustot = 0;
var selectedOption = document.selectionForm.selectionOption.value;
if (selectedOption === 'spaghetti') {
total = 9.62;
taxes = 0.67;
soustot = 8.95;
} else if (selectedOption === 'lasagne') {
total = 10.70;
taxes = 0.75;
soustot = 9.95;
} else if (selectedOption === 'salade') {
total = 6.30;
taxes = 0.45;
soustot = 5.95;
} else if (selectedOption === 'escargot') {
total = 5.32;
taxes = 0.37;
soustot = 4.95;
}
document.getElementById("taxes").innerHTML = taxes;
document.getElementById("total").innerHTML = total;
document.getElementById("soustot").innerHTML = soustot;
}
label { display: block; }
<div>
Taxes: <span id="taxes"></span>
</div>
<div>
Total: <span id="total"></span>
</div>
<div>
Soustot: <span id="soustot"></span>
</div>
<hr>
<form name="selectionForm">
<label>
<input type="radio" name="selectionOption" value="spaghetti">
Spaghetti
</label>
<label>
<input type="radio" name="selectionOption" value="lasagne">
Lasagne
</label>
<label>
<input type="radio" name="selectionOption" value="salade">
Salade
</label>
<label>
<input type="radio" name="selectionOption" value="escargot">
Escargot
</label>
</form>
<button onclick="taxesrepas();">Calculate</button>