JavaScript.每日能源计算器,错误在IE/Safari,但运行在Chrome/Firefox
JavaScript. Daily Energy Calculator, Error in IE/Safari but running in Chrome/Firefox
我已经为一个web应用程序编写了这个脚本,但计算器确实在Chrome和Firefox中工作,而它在IE/Edge或Safari中不起作用。知道为什么会这样,我该怎么处理吗?由于
//----------- Calculate Minimum Daily Energy Requirement ------------- */
function calculateMDE() {
var weight = document.mdeForm.weight.value;
var height = document.mdeForm.height.value;
var age = document.mdeForm.age.value;
var sex = document.mdeForm.sex.value;
var activity = document.mdeForm.activity.value;
if (weight > 0 && height > 0 && age > 0 && sex === "female") {
var finalBmr = 655 + (9.6 * weight) + (1.8 * height) - (4.7 * age);
}
else if (weight > 0 && height > 0 && age > 0 && sex === "male") {
var finalBmr = 66 + (13.7 * weight) + (5 * height) - (6.8 * age);
}
if (activity === "sedentary") {
document.mdeForm.meaning.value = Math.round(finalBmr * 1.2);
}
else if (activity === "light") {
document.mdeForm.meaning.value = Math.round(finalBmr * 1.375);
}
else if (activity === "moderate") {
document.mdeForm.meaning.value = Math.round(finalBmr * 1.55);
}
else if (activity === "very") {
document.mdeForm.meaning.value = Math.round(finalBmr * 1.725);
}
else if (activity === "extra") {
document.mdeForm.meaning.value = Math.round(finalBmr * 1.9);
}
else {
alert("There Was a Problem! Please Try Again!");
}
}
我的HTML表单是:
<form name="mdeForm">
Your Weight (kg):
<input type="text" name="weight" size="25">
<br /> Your Height (cm):
<input type="text" name="height" size="25">
<br />Your Age (years):
<input type="text" name="age" size="25">
<br />
<label class="radio-inline">
<input type="radio" name="sex" value="female">Female</label>
<label class="radio-inline">
<input type="radio" name="sex" value="male">Male </label>
<br />
<label class="radio-inline">
<input type="radio" name="activity" value="sedentary">Sedentary (little or no exercise)</label>
<label class="radio-inline">
<input type="radio" name="activity" value="light">Lightly Active (light exercise/sports 1-3 days/week)</label>
<label class="radio-inline">
<input type="radio" name="activity" value="moderate">Moderately Active (moderate exercise/sports 3-5 days/week)</label>
<label class="radio-inline">
<input type="radio" name="activity" value="very">Very Active (hard exercise/sports 6-7 days a week)</label>
<label class="radio-inline">
<input type="radio" name="activity" value="extra">Extra Active (very hard exercise/sports/physical job)</label>
<input type="button" value="Calculate MDE" onclick="calculateMDE()">
<br /> Your Minimum Daily Energy Requirement in kcal is:
<input type="text" name="meaning" size="25">
<br />
<input type="reset" value="Reset" />
</form>
var sex = document.mdeForm.sex.value; //Returns a NodeList in IE
用来选择选中的单选按钮:
var sex = document.querySelectorAll('input[name^="sex"]:checked')[0].value;
var activity = document.querySelectorAll('input[name^="activity"]:checked')[0].value;
它返回"选中的单选按钮"中第一个元素的值-NodeList。
应该适用于IE>= 9
为了防止错误,你可以这样做:
var checkedSex = document.querySelectorAll('input[name^="sex"]:checked');
var checkedActivity = document.querySelectorAll('input[name^="activity"]:checked');
var sex = (checkedSex.length > 0 ? checkedSex[0].value : null);
var activity = (checkedActivity.length > 0 ? checkedActivity[0].value : null);
否则你会得到一个"Cannot read property 'value' of undefined"-错误,如果没有性别或活动单选按钮被选中
JSFiddle
相关文章:
- 这个jQuery代码在Mozilla上运行良好,但在Chrome,Opera,Safari上则不然
- 在iPad上运行时,Mobile Safari中即将切换选项卡的Pagehide事件不会触发
- 我的简单Javascript代码可以在Safari上运行,但不能在Chrome、Firefox或Opera上运行
- Javascript语法在Safari/Webkit中无效,在Chrome/Firefox中运行良好
- 在ipod上的safari浏览器中运行asp.net应用程序
- Javascript可以在Safari上运行,但不能在任何其他浏览器上运行
- HTML中的onclick事件<选择>无法运行Chrome和Safari
- 当Safari正在运行并且没有窗口时,我如何通过JavaScript Automation打开Safari的新窗口
- 弹出窗口在iPad safari浏览器中无法正常运行
- 我如何获得这个非常简单的页面移植到Chrome扩展程序以在Firefox和Safari上运行
- 如何防止在 Safari 中使用 javascript 设置高度后在页面加载时运行过渡
- Javascript setInterval 不在 Windows 上的 Safari 中运行,在 Chrome 中工作
- 如何在Safari的地址栏中运行javascript(外部URL)
- Javascript 在加载 200mb 的新 Images() 后在 Safari / iPad2 中运行缓慢.为什么
- 如何检测 Web 应用是否在应用模式或 Safari 模式下运行
- 如何在 Safari 中使用箭头函数运行 ES6 代码
- Safari,Chrome在页面加载之前在window.load中运行代码
- Firefox ONLY不会在if语句中运行一行javascript代码,但会运行其他行——chrome和safari运
- 音频元素在Safari中运行良好,但在XCode模拟器(web视图)中中断
- DOM方法在Chrome、safari、mozilla中不起作用,在IE*中运行良好