我在网上找到了这个代码而且无法让它正常工作有人可以告诉我哪里出错了?这个描述听起来好像它将完全按照我需要的方式工作,但由于某种原因我不能让它在我的最终正常工作。我一直在发出一堆警报,甚至无法显示它们。对不起,我很想自学JavaScript。
输入按钮:
<cfinput
type="datefield"
name="purchasedate"
width="130"
required="yes"
message="Please enter purchase date."
value="#dateformat(now(),"mm/dd/yyyy")#"
oninput="calculateTotal();"
>
JavaScript功能:
function getDatePrice(date) {
var datePrice = 0
var theForm = document.forms["form"];
var purchasedate = theForm.elements["purchasedate"];
var date = new Date(purchasedate.value);
if (Object.prototype.toString.call(date) !== '[object Date]') {
date = new Date();
}
var today = new Date();
var diffMilli = today - date;
var diffDays = diffMilli * 1000 * 60 * 60 * 24;
if (diffDays > 30) {
datePrice= 20;
}
return datePrice;
}
function calculateTotal()
{
var titleFees = getDatePrice(date);
var divobj = document.getElementById('totalPrice');
divobj.style.display='block';
divobj.innerHTML = "Estimated Transfer Fees $"+titleFees;
}
答案 0 :(得分:1)
function getDatePrice() { // Don't pass any arguments ..*
var theForm = document.forms.form; // Use rather dot notation
var purchasedate = theForm.elements.purchasedate; // Use rather dot notation
var date = new Date(purchasedate.value); // *.. cause you'll get here the value
if (Object.prototype.toString.call(date) !== '[object Date]') {
date = new Date();
}
var today = new Date();
var diffMilli = today - date;
// So today - date = Some time in milliseconds...
// if you multiply that value you'll get an astronomic number so, to get days..
var diffDays = Math.floor(diffMilli / 1000 / 60 / 60 / 24); // ..Divide!
var datePrice = 0;
if (diffDays > 30) {
datePrice = 20;
}
return datePrice;
}
function calculateTotal(){
var divobj = document.getElementById('totalPrice');
divobj.style.display = 'block';
divobj.innerHTML = "Estimated Transfer Fees $"+ getDatePrice();
}
<强> Live demo 强>
并且对于Input事件,请使用oninput="calculateTotal();"