[英]having trouble with javascript
Javasctipt的初学者。 我正在尝试编写一个简单的计算,如果自从换油以来的时间超过6个月,车内剩余的油量少于开始的时间,则显示一些文本,如果一切正常,则最后显示。
谢谢您的帮助
的JavaScript
function oil(){
var start = document.oil.start.value;
var lastOilChange = document.oil.time.value;
var totalOil = document.oil.amount.value;
var aa = "you need to change the oil";
if( lastOilChange > 6 || start < totalOil){
document.oil.result.write(aa);
}else{
document.oil.result.write("Everything Is all good");
}
}
的HTML
<form name="oil">
Starting amount of oil
<input type="text" name="start">
Time since oil change
<input type="text" name="time">
Total amount of oil in car now(quarts)
<input type="text" name="amount">
<input type="submit" onclick = oil()>
<input name=result readonly>
</form>
您的代码有几个问题
Form
关闭标签 submit
输入。 尝试button
document.oil.result.write(aa);
会做。 我认为正确的过程是使用document.getElementById
获取输入,然后设置控件的值 我将尝试以最少的换行次数回答您的问题。 这不是最佳答案。 添加了注释,以帮助您了解所需的更改。 您的HTML 和 JavaScript无效,因此让我惊讶的是它们都在Chrome上运行。
<!doctype>
<html>
<head>
<title>Personal</title>
<meta charset="utf-8">
<script type="text/javascript">
function _oil(){ // oil() conflicts with your form's name
var start = document.oil.start.value;
var lastOilChange = document.oil.time.value;
var totalOil = document.oil.amount.value;
var aa = "you need to change the oil";
if( lastOilChange > 6 || start < totalOil){
document.write(aa); // you can't .write() to an element
}else{
document.write("Everything Is all good");
}
window.event.preventDefault(); // so your window does not load the same page when you submit
return false;
}
</script>
<style>
form input {
display: block;
}
</style>
</head>
<body>
<form name="oil">
Starting amount of oil
<input type="text" name="start">
Time since oil change
<input type="text" name="time">
Total amount of oil in car now(quarts)
<input type="text" name="amount">
<input type="submit" onclick ="_oil()"> <!-- you must enclose the onclick attribute, even if both work -->
<input name=result readonly>
</body>
</html>
可能是这样的:
<!doctype>
<html>
<head>
<title>Personal</title>
<meta charset="utf-8">
<script type="text/javascript">
function oil(){
var start = document.getElementsByName("start")[0].value;
var lastOilChange = document.getElementsByName("time")[0].value;
var totalOil = document.getElementsByName("amount")[0].value;
var aa = "you need to change the oil";
if( lastOilChange > 6 || start < totalOil){
document.getElementsByName("result")[0].value = aa;
}else{
document.getElementsByName("result")[0].value = "Everything Is all good";
}
}
</script>
<style>
form input {
display: block;
}
</style>
</head>
<body>
<form name="thisform">
Starting amount of oil
<input type="text" name="start">
Time since oil change
<input type="text" name="time">
Total amount of oil in car now(quarts)
<input type="text" name="amount">
<input type="button" value="go" onclick = oil()>
<input name=result readonly>
</form>
</body>
</html>
!!!表格名称不能使用油
您想要设置表单字段的值,而不是尝试使用write
:
if( lastOilChange > 6 || start < totalOil){
document.oil.result.value = aa;
} else {
document.oil.result.value = "Everything Is all good";
}
但是,正如其他答案所指出的那样,您还需要阻止表单尝试将信息提交到服务器并重新加载页面。 有几种方法可以做到这一点(请参见例如JavaScript代码以停止表单提交 )。 一种是将提交按钮替换为普通按钮( <input type="button" value="Calculate" />
)。
另一个方法是将您的函数作为事件处理程序附加到表单,并在其末尾return false
。
document.oil.onsubmit = function () {
...
return false;
}
( JSFiddle )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.