javascript - 将 if 和 else if 函数与选择输入一起使用(根据公里和英里转换结果)

标签 javascript if-statement select

几天来,我一直在尝试根据 Peter Riegel 的公式构建一个比赛预测计算器,并且只有在原始距离和 future 距离设置相同时才能使其正常工作(见下文)。

但是,我希望用户能够使用原始距离和 future 距离表单中的“选择”和“选项”来选择公里或英里。我在脚本中尝试过 else 和 else if 语句,但完全失败了。如果有人能帮助我解决这个问题,我将不胜感激。 (我已经放入了选择和选项,因此这只是我需要帮助的脚本)。

我完全是自学成才,所以如果下面的代码完全困惑或不正确,我深表歉意。谢谢你!詹姆斯

function predictorCalc()  //Predicting future race results
{

var d1 = document.predictor.d1.value;
var t1 = document.predictor.time1hr.value * 60 * 60 + document.predictor.time1min.value * 60 + document.predictor.time1sec.value * 1;
var deg = document.predictor.deg.value;
var d2 = document.predictor.d2.value;	
  
//NEED TO INPUT IF & ELSE IF STATEMENTS HERE TO MANIPULATE THE RESULT DEPENDING ON WHETHER THE DISTANCE SELECTED IN D1 or D2 is KM OR MILES//

t2 = t1 * (Math.pow((d2 / d1), deg)); //predicted time in seconds (Equation T2=T1*(D2/D1)1.06)

phr = Math.floor(t2/3600); 						 //total hrs
pmin = Math.floor((t2 - (phr*(3600)))/60);		 //total mins
psec = Math.floor(t2 - (phr*(3600))-(pmin*60));  //total secs

document.predictor.time2hr.value = round(phr,0);
document.predictor.time2min.value = round(pmin,0);
document.predictor.time2sec.value = round(psec,0);

}


function round(x) {
  return Math.round(x*100)/100;
}
<form name="predictor">

<table>
<tbody>
	<tr>
		<td>D1 (Original distance)</td>
		<td><input type="text" name="d1" size="3">km</td>
		<td>
			<select size="1" name="d1units">
			<option selected="" value="k">Kilometers</option>
			<option value="m">Miles</option>
			</select>
		</td>
	</tr>
			
	<tr>
		<td>T1 (original time)</td>
		<td><input name="time1hr" size="3" maxlength="2" type="text">hr</td>
		<td><input type="text" name="time1min" size="3">min</td>
		<td><input type="text" name="time1sec" size="3">sec</td>
	</tr>
			
	<tr>
		<td>D2 (Future distance competing in)</td>
		<td><input type="text" name="d2" size="3">km</td>
		<td>
          <select size="1" name="d2units">
				<option selected="" value="k">Kilometers</option>
				<option value="m">Miles</option>
		  </select>
		</td>
	</tr>
	
    <tr>
		<td>Performance Degradation</td>
		<td colspan="3"><input name="deg" size="2" maxlength="4" type="text" value="1.06">(6% or 1.06 as standard)</td>
	</tr>
  
	<tr>
		<td><input onclick="predictorCalc()" value="Calculate" type="button"></td>
	</tr>
			
	<tr>
		<td>T2 (Predicted future time)</td>
		<td><input name="time2hr" size="3" maxlength="2" type="text">hr</td>
		<td><input type="text" name="time2min" size="3">min</td>
		<td><input type="text" name="time2sec" size="3">sec</td>
	</tr>
		
</tbody>
</table>
</form>

最佳答案

function predictorCalc()  //Predicting future race results
{
  const kmPerMile=1.60934;
  var d1u = document.predictor.d1units;
  var d1units = d1u.options[d1u.selectedIndex].value;
  var d1 = d1units=='k'?document.predictor.d1.value:document.predictor.d1.value*kmPerMile;

  var d2u = document.predictor.d2units;
  var d2units = d2u.options[d2u.selectedIndex].value;
  var d2 = d2units=='k'?document.predictor.d2.value:document.predictor.d2.value*kmPerMile;

  var t1 = document.predictor.time1hr.value * 60 * 60 + document.predictor.time1min.value * 60 + document.predictor.time1sec.value * 1;
  var deg = document.predictor.deg.value;

  //NEED TO INPUT IF & ELSE IF STATEMENTS HERE TO MANIPULATE THE RESULT DEPENDING ON WHETHER THE DISTANCE SELECTED IN D1 or D2 is KM OR MILES//

  t2 = t1 * (Math.pow((d2 / d1), deg)); //predicted time in seconds (Equation T2=T1*(D2/D1)1.06)

  phr = Math.floor(t2/3600);                         //total hrs
  pmin = Math.floor((t2 - (phr*(3600)))/60);         //total mins
  psec = Math.floor(t2 - (phr*(3600))-(pmin*60));  //total secs

  document.predictor.time2hr.value = round(phr,0);
  document.predictor.time2min.value = round(pmin,0);
  document.predictor.time2sec.value = round(psec,0);

}

关于javascript - 将 if 和 else if 函数与选择输入一起使用(根据公里和英里转换结果),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34318722/

相关文章:

javascript - 为什么键值对中的 ":"在控制台中打印时转换为 =。

javascript - 如何缩短 JavaScript if/else 语句?

sql-server - 如何在 SQL SERVER 中选择最后一个不同的记录

ios - 无论如何要缩短 if ( i == x || i == y)?

jQuery 如果复选框被选中

sql - WHERE 子句中的逻辑处理顺序或 SQL 标准

javascript - HTML 下拉框重定向

javascript - 图表js在运行时通过按钮单击显示/隐藏图例

javascript - 同步加载外部 JavaScript

javascript - 流畅的按键输入? Javascript 中的(持续的按键输入流)