问题描述
- 下拉列表联动多个文本框计算
-
<html> <head> <SCRIPT LANGUAGE="JavaScript"> <!-- Begin var messages = new Array(); messages[0] = "美元"; //这里写入每个选项对应的说明文字 messages[1] = "人民币"; messages[2] = "英镑"; messages[3] = "日元"; messages[4] = "0.5"; //这里写入每个选项对应的说明文字 messages[5] = "0.6"; //根据需要,这里应该随着选项的改变而增减项目 function messageReveal() { var messageindex = document.messageForm.messagePick.selectedIndex; //取得当前下拉菜单选定项目的序号 if(helpmsg = messages[1]){ helpmsg = messages[2]; helpmsg1 = messages[3]; //根据序号取得当前选项的说明 helpmsg2 = messages[4]; helpmsg3 = messages[5]; //想在这计算可以兑换的币种了 每个币种多少钱 应该看代码就看明白 嘿嘿 但是我不知道怎么就算了 每个条件里都得计算 document.messageForm.messageField.value = helpmsg document.messageForm.messageField1.value = helpmsg1 //将说明写进文框 document.messageForm.messageField2.value = helpmsg2 document.messageForm.messageField3.value = helpmsg3 }else if(helpmsg = messages[2]){ //这个就不好使了 我不知道原因 我估计是else if()里的条件不对 当然了写的有点乱 helpmsg4 = messages[1]; helpmsg5 = messages[3]; //根据序号取得当前选项的说明 document.messageForm.messageField.value = helpmsg4 document.messageForm.messageField1.value = helpmsg5 } } // End --> </SCRIPT> <title>下拉菜单和文本框构建的介绍栏</title> </head> <body> <form name="messageForm"> <select name="messagePick" OnChange="messageReveal()"> <option value="0">美元 <option>人民币 <option>英镑 <option>日元 </select> 金额<input id="money" type="text" /> <br><br><br><br><br> 币种<input name="messageField" type="text" style="overflow:auto" /> 兑换金额<input name="messageField4" type="text" style="overflow:auto" /> 兑换利率<input name="messageField2" type="text" style="overflow:auto" /><br> 币种<input name="messageField1" type="text" style="overflow:auto" /> 兑换金额<input name="messageField5" type="text" style="overflow:auto" /> 兑换利率<input name="messageField3" type="text" style="overflow:auto" /> </form> </body> </html>
这个是我写的 但是我不知道为什么 执行第二个条件执行不了 可能是条件不对 在没个if里都要有个计算 最好在我的基础改动 这样按能看明白 如果不是 请写上注释 谢谢
解决方案
<form name="messageForm">
<div class="refitem">
币种:<select onchange="outputRst()" id="sMoney">
<option>请选择..</option>
<option>美元</option>
<option>人民币</option>
<option>英镑</option>
<option>日元</option>
</select>
金额<input type="text" id="amount" onchange="outputRst()" />
</div>
<br /><br />
<table id="tbRst" border="1">
<tr><td>币种</td><td>兑换金额</td><td>汇率</td></tr>
</table>
</form>
<script>
var rate = { 美元: { 人民币: 6.5781, 英镑: 0.6943, 日元: 119.53,美元:1 } };//参考对照
var Money = ',美元,人民币,英镑,日元,';
var tbRst = document.getElementById('tbRst'), tr,td;
var refMoney, refAmount, tMoney, tAmount, tRate;
var sel = document.getElementById('sMoney');
function outputRst() {
//移除上一次的转换
while (tbRst.rows.length > 1) { tr = tbRst.rows[tbRst.rows.length - 1]; tr.parentNode.removeChild(tr); }
if (sel.selectedIndex == 0) return;
refMoney = sel.options[sel.selectedIndex].text;//参考币种
refAmount = parseFloat(document.getElementById('amount').value) || 0;//数量
var arr = Money.replace(',' + refMoney + ',',',').replace(/^,|,$/g, '').split(',');//删除参考币种后拆分得到目标币种
for (var i = 0; i < arr.length; i++) {
tMoney = arr[i];
if (refMoney == '美元') tRate = rate.美元[tMoney];//美元,有参考值可取,不需要计算
else tRate = 1 / rate.美元[refMoney] * rate.美元[tMoney]; //不是美元,需要重新换算汇率
tr = tbRst.insertRow(tbRst.rows.length);
td = tr.insertCell(0); td.innerHTML = tMoney;
td = tr.insertCell(1); td.innerHTML = (tRate * refAmount).toFixed(2);
td = tr.insertCell(2); td.innerHTML = tRate.toFixed(4);
}
}
</script>
解决方案二:
if(helpmsg = messages[1]){
怎么只有一个=
你这是在 设值呢
它永远都是1 true
解决方案三:
第一个if 是true当然不会执行第二个了
解决方案四:
helpmsg 你在哪定义的?而且比较是==,不是=
你是=的话给helpmsg赋值message[1],message[1]是人民币,判断永远为真
if (helpmsg == messages[1]) {/////////
helpmsg = messages[2];
helpmsg1 = messages[3]; //根据序号取得当前选项的说明
helpmsg2 = messages[4];
helpmsg3 = messages[5];
//想在这计算可以兑换的币种了 每个币种多少钱 应该看代码就看明白 嘿嘿 但是我不知道怎么就算了 每个条件里都得计算
document.messageForm.messageField.value = helpmsg
document.messageForm.messageField1.value = helpmsg1 //将说明写进文框
document.messageForm.messageField2.value = helpmsg2
document.messageForm.messageField3.value = helpmsg3
} else if (helpmsg == messages[2]) {///////////
//这个就不好使了 我不知道原因 我估计是else if()里的条件不对 当然了写的有点乱
helpmsg4 = messages[1];
helpmsg5 = messages[3]; //根据序号取得当前选项的说明
document.messageForm.messageField.value = helpmsg4
document.messageForm.messageField1.value = helpmsg5
}
解决方案五:
你学点js 调试的技巧吧。这样遇到问题你就知道哪里出错,先看看debug js
解决方案六:
<html>
<head>
<title>下拉菜单和文本框构建的介绍栏</title>
</head>
<body>
<form name="messageForm">
<div class="refitem">
币种:<select>
<option>美元</option>
<option>人民币</option>
<option>英镑</option>
<option>日元</option>
</select>
金额<input type="text" />
</div>
<br /><br />
<div class="item">
币种:<select>
<option>美元</option>
<option>人民币</option>
<option>英镑</option>
<option>日元</option>
</select>
金额<input type="text" readonly />
兑换利率<input type="text" readonly />
</div>
<div class="item">
币种:<select>
<option>美元</option>
<option>人民币</option>
<option>英镑</option>
<option>日元</option>
</select>
金额<input type="text" readonly />
兑换利率<input type="text" readonly />
</div>
</form>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.1.min.js"></script>
<script>
var rate = { 美元: { 人民币: 6.5781, 英镑: 0.6943, 日元: 119.53,美元:1 } };//参考对照
var ipts, refMoney, refAmount, tMoney, tAmount,tRate;
$('div.refitem :input,div.item select').change(function () {
ipts = $(':input', 'div.refitem');
refMoney = ipts[0].options[ipts[0].selectedIndex].text;//参考币种
refAmount = parseFloat(ipts[1].value) || 0;//数量
$('div.item').each(function () {
ipts = $(':input', this);
tMoney = ipts[0].options[ipts[0].selectedIndex].text;//目标币种
if (refMoney == '美元') tRate = rate.美元[tMoney];//美元,有参考值可取,不需要计算
else tRate = 1 / rate.美元[refMoney] * rate.美元[tMoney]; //不是美元,需要重新换算汇率
ipts[1].value = (tRate * refAmount).toFixed(2);
ipts[2].value = tRate.toFixed(4);
});
});
</script>
</body>
</html>
跟图片一样 当选择完币种,填入金额失去焦点之后 是图片上的这个样子的
时间: 2024-09-14 00:58:32