使用javascript和select选项进行计算?
有人请帮我写一些javascript代码。我正在使用asp.net构建一个网站,其中有多个html select元素,其选定选项决定输入框的值,请参见以下链接: 我将有大约67个这样的下拉列表,这将是一个噩梦代码与一个低效的代码 请帮我为这两个选择编写一个更有效的代码,然后我可以自己完成其余的工作使用javascript和select选项进行计算?,javascript,jquery,html,math,select,Javascript,Jquery,Html,Math,Select,有人请帮我写一些javascript代码。我正在使用asp.net构建一个网站,其中有多个html select元素,其选定选项决定输入框的值,请参见以下链接: 我将有大约67个这样的下拉列表,这将是一个噩梦代码与一个低效的代码 请帮我为这两个选择编写一个更有效的代码,然后我可以自己完成其余的工作 干杯。我将您的代码分成了几个部分(我使用了jquery),不过您仍然应该更改函数名和calculateValue实现,以使代码更加清晰 $(document).ready(function(){
干杯。我将您的代码分成了几个部分(我使用了jquery),不过您仍然应该更改函数名和calculateValue实现,以使代码更加清晰
$(document).ready(function(){
initCalculation($('#keyTechTextBox'),$("#dropdown_serverVirtualisation"),$("#dropdown_desktopVirtualisation"));
//more can be added here
});
function initCalculation(inputField,select1,select2){
select1.change(function(){ //this can be done more generic
inputField.val(calculateValue(select1.val(),select2.val()).toFixed(0)+"%");
});
select2.change(function(){
inputField.val(calculateValue(select1.val(),select2.val()).toFixed(0)+"%");
});
}
function calculateValue(firstOpt,secondOpt){ //more abstract function name please :D
//you should really optimize this.. - i did some
var sV_Value = 10;
var sV1 =0;
var sV2 = sV_Value;
var dV1 =0;
var dV2 = dV_Value;
if (firstOpt === "G") {
sV1 = sV_Value;
}
if (firstOpt === "O") {
sV1 = sV_Value * 0.5;
}
if (firstOpt === "A") {
sV1 = sV_Value * 0.3;
}
if (firstOpt === "R") {
sV1 = 0;
} else if (firstOpt === "U") {
sV1 = 0;
}
if (secondOpt === "N") {
dV2 = 0;
}
if (secondOpt === "G") {
dV1 = dV_Value;
}
if (secondOpt === "O") {
dV1 = dV_Value * 0.5;
}
if (secondOpt === "A") {
dV1 = dV_Value * 0.3;
}
var keyTechTotal1 = sV1 + dV1;
var keyTechTotal2 = sV2 + dV2;
return (keyTechTotal1) / (keyTechTotal2) * 100;
}
下面我向您展示一个更通用的javascript解决方案
更改html中每个选项的“最小”和“最大”属性,然后开始计算
您通常可以在.net中插入数据最小值和最大值属性
<input class="textBox" runat="server" type="text" id="keyTechTextBox" readonly="true" />
<select runat="server" id="dropdown_serverVirtualisation" onchange="keyTechAdoption()">
<option class="lightgrey" value="N" data-min="0" data-max="1">N</option>
<option class="green" value="G" data-min="0" data-max="1">G</option>
<option class="orange" value="O" data-min="0" data-max="1">O</option>
<option class="yellow" value="A" data-min="0" data-max="1">A</option>
<option selected="selected" class="red" value="R" data-min="0" data-max="1">R</option>
<option class="purple" value="U" data-min="0" data-max="1">U</option>
</select>
<select runat="server" id="dropdown_desktopVirtualisation" onchange="keyTechAdoption()">
<option class="lightgrey" value="N" data-min="0" data-max="1">N</option>
<option class="green" value="G" data-min="0" data-max="1">G</option>
<option class="orange" value="O" data-min="0" data-max="1">O</option>
<option class="yellow" value="A" data-min="0" data-max="1">A</option>
<option selected="selected" class="red" value="R" data-min="0" data-max="1">R</option>
<option class="purple" value="U" data-min="0" data-max="1">U</option>
</select>
<script type="text/javascript">
function initCalculation(inputField,select1,select2){
opt1 = select1.find('option:selected');
opt2 = select2.find('option:selected');
select1.change(function(){ //this can be done more generic
inputField.val(calculateValue(opt1,opt2).toFixed(0)+"%");
});
select2.change(function(){
inputField.val(calculateValue(opt1,opt2).toFixed(0)+"%");
});
}
function calculateOptions(el1,el2){
calculateValue(el1.data('min'),el1.data('max'),el1.data('min'),el1.data('max'));
}
function calculateValue(sV1,sV2,dV1,dV2){ //more abstract function name please :D
var keyTechTotal1 = sV1 + dV1;
var keyTechTotal2 = sV2 + dV2;
return (keyTechTotal1) / (keyTechTotal2) * 100;
}
</script>
N
G
O
A.
R
U
N
G
O
A.
R
U
函数初始化计算(输入字段,选择1,选择2){
opt1=select1.find('option:selected');
opt2=select2.find('option:selected');
选择1.change(function(){//这可以更一般地完成
val(calculateValue(opt1,opt2).toFixed(0)+“%”;
});
选择2.更改(函数(){
val(calculateValue(opt1,opt2).toFixed(0)+“%”;
});
}
函数计算选项(el1、el2){
计算值(el1.data('min')、el1.data('max')、el1.data('min')、el1.data('max'));
}
函数calculateValue(sV1,sV2,dV1,dV2){//请提供更抽象的函数名:D
var-keyTechTotal1=sV1+dV1;
var-keyTechTotal2=sV2+dV2;
返回(keyTechTotal1)/(keyTechTotal2)*100;
}
您能描述一下应该如何计算百分比吗?我正在考虑如何解释这一点,因为它非常复杂,给我一些时间,对不起,用文字来解释太复杂了-如果你看看js代码,你可以看到计算是如何工作的exactly@joelharkes我要试着解释一下,抱歉,如果没有帮助-基本上两个下拉列表都有一个控制变量-取决于所选的选项值-下拉列表通过与控制变量相乘将值分配给两个变量-两个下拉列表的第一个值和第二个值分别相加为两个和-然后它们被彼此除以解释了一些问题,但在这67个下拉列表中,变量是什么:唯一的区别是有67个下拉列表,还是每个下拉列表都有不同的值和不同的控制变量?非常感谢你的帮助,我会尽我所能使它更有效率