2014-10-06 199 views
0

最近我開發了有很多實時計算選項的系統。我已經在Firefox上測試這些功能,但是當我嘗試在Chorme中運行此程序時,它不起作用。它沒有顯示結果JavaScript功能不適用於Chrome和IE,但適用於FireFox

function premiumCalculation(){ 

var shortPeriodRate = 100; 
var spr    = document.getElementById("policyPeriod"); 
shortPeriodRate  = parseInt(spr.options[spr.selectedIndex].value); 
var shortPeriodDate = spr.options[ spr.selectedIndex ].text; 
//================== hidden assign ====================================================== 
document.getElementById("policyPeriodInput").value = spr.options[spr.selectedIndex].text; 
//======================================================================================= 

var sumInsured = document.getElementById("sumInsuredValue").value; 
var basicRate = document.getElementById("basicRate").value; 
var srcc = document.getElementById("srccRateInput").value; 
var tc  = document.getElementById("tcRateInput").value;  

//============================= BASIC PREMIUM CALCULATION ========================================== 
var shortPrecentage = parseFloat(shortPeriodRate)/100; 
var basicPremium = ((parseFloat(sumInsured) * parseFloat(basicRate)) * parseFloat(shortPrecentage)/100); 
if(basicPremium < 500){basicPremium = 500;} 
document.getElementById("basicPremium").innerHTML = money_format(basicPremium); 
document.getElementById("basicPremiumInput").value = basicPremium; 
//=================================================================================================== 


var currentDate = new Date(); 
var nextDate = ''; 

var spd   = shortPeriodDate.split(" "); 
var spdDate  = spd[0]; 

//================ FOR 3 & 10 DAYS =============================== 
if(shortPeriodRate == 5 || shortPeriodRate == 10){ 
    var month  = currentDate.getMonth()+ 1; 
    var day   = currentDate.getDate() + parseFloat(spdDate); 
    var year  = currentDate.getFullYear(); 
    if(month < 10){ month = "0" + month;} 
    nextDate  = (year + '/' + month + '/' + day); 
    nextDate  = new Date(nextDate); 
    nextDate  = nextDate.toLocaleFormat('%Y-%m-%d'); 
    } 
//================================================================ 
//================ FOR Months ============================================== 
if(shortPeriodRate != 5 && shortPeriodRate != 10 && shortPeriodRate != 25){ 
    var month  = (currentDate.getMonth()+ 1) + parseFloat(spdDate); 
    var day   = currentDate.getDate(); 
    var year  = currentDate.getFullYear(); 
    if(month < 10){ month = "0" + month;} 
    nextDate  = (year + '/' + month + '/' + day); 
    nextDate  = new Date(nextDate); 
    nextDate  = nextDate.toLocaleFormat('%Y-%m-%d'); 
    } 
//=========================================================================== 
//========================= DATE DIFFERENCE ========================================== 
var oneDay  = 24*60*60*1000;  
var firstDate  = new Date(currentDate); 
var secondDate  = new Date(nextDate); 
var dateDifference = Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay)); 
dateDifference  = Math.round(dateDifference); 
//==================================================================================== 
//===================== SRCC PREMIUM CALCULATION ============================================== 
var srccLogic  = document.getElementById('strikeRiot').value; //alert(srccLogic); 
if(srccLogic == 'yes'){ 
var srccPrecentage = parseFloat(dateDifference)/365; 
var srccPremium  = (parseFloat(sumInsured) * parseFloat(srcc) * parseFloat(srccPrecentage)/100); 
document.getElementById("srccPremium").innerHTML  = money_format(srccPremium); 
document.getElementById("srccPremiumInput").value  = srccPremium; 
} else { 
srccPremium  = 0; 
srccPrecentage = 1; 
document.getElementById("srccPremium").innerHTML  = money_format(srccPremium); 
document.getElementById("srccPremiumInput").value  = srccPremium; 
} 
//============================================================================================= 
//========================= TC PREMIUM CALCULATION ========================================== 
var tcLogic   = document.getElementById('terrorism').value; //alert(srccLogic); 
if(tcLogic == 'yes'){ 
var tcPrecentage = parseFloat(dateDifference)/365; 
var tcPremium  = (parseFloat(sumInsured) * parseFloat(tc) * parseFloat(tcPrecentage)/100); 
document.getElementById("tcPremium").innerHTML   = money_format(tcPremium); 
document.getElementById("tcPremiumInput").value   = tcPremium; 
} else { 
tcPremium  = 0; 
tcPrecentage = 1; 
document.getElementById("tcPremium").innerHTML   = money_format(tcPremium); 
document.getElementById("tcPremiumInput").value   = tcPremium; 
} 
//=========================================================================================== 
//==================== ADMIN FEE CALCULATION ======================================= 
    var adminFeeTotal  = basicPremium + srccPremium + tcPremium; 
var adminFee  = (parseFloat(adminFeeTotal) * 0.3)/100 ; 
document.getElementById("adminFee").innerHTML   = money_format(adminFee); 
document.getElementById("adminFeeInput").value   = adminFee; 
//================================================================================== 
//================== POLICY FEE====================================== 
document.getElementById("policyFee").innerHTML   = "450.00"; 
document.getElementById("policyFeeInput").value   = "450"; 
//=================================================================== 
//================== STAMPFEE CALCULATION =========================== 
var totalUp   = parseFloat(basicPremium) + parseFloat(srccPremium) + parseFloat(tcPremium) + parseFloat(adminFee) + parseFloat(450); 
var stampFee  = Math.round((totalUp * 0.1)/100); 
var stampFeeS  = (totalUp * 0.1)/100; 
var roundUpString = stampFeeS.toString(); 
var roundUpVal  = roundUpString.split("."); 
var roundUpValT  = roundUpVal[1]; var roundUpValTV = parseFloat(roundUpValT); 
//if(roundUpValTV > 0){ stampFee = stampFee + 1;} 
document.getElementById("stampFee").innerHTML   = money_format(stampFee); 
document.getElementById("stampFeInput").value   = stampFee; 
//================================================================================ 
//================= NBT CALCULATION ============================================== 
var nbtPremium  = ((totalUp * 2)/98); 
document.getElementById("nbt").innerHTML    = money_format(nbtPremium); 
document.getElementById("nbtInput").value    = nbtPremium; 
//================================================================================ 
//================ VAT CALCULATION =============================================== 
var totalForVAT  = parseFloat(totalUp) + parseFloat(nbtPremium); 
var VATPremium  = ((totalForVAT * 12)/100); 
document.getElementById("vat").innerHTML    = money_format(VATPremium); 
document.getElementById("vatInput").value    = VATPremium; 
//================================================================================ 
//=============== GROSS CALCULATION ================ 
var grossPremium = parseFloat(totalForVAT) + parseFloat(stampFee); 
document.getElementById("grossPremium").innerHTML  = money_format(grossPremium); 
document.getElementById("grossPremiumInput").value  = grossPremium; 
//================================================== 
//=============== NETPREMIUM CALCULATION =========== 
var netPremium  = parseFloat(grossPremium) + parseFloat(VATPremium); 
document.getElementById("netPremium").innerHTML   = money_format(netPremium); 
document.getElementById("netPremiumInput").value  = netPremium; 
//================================================== 

}

enter image description here enter image description here

+0

您是否檢查過控制檯是否有任何錯誤? – 0x47686F7374 2014-10-06 09:04:41

+0

Uncaught TypeError:undefined不是函數 但它在FireFox上正常工作 – 2014-10-06 09:07:06

+0

在該錯誤的右側應該有一些格式爲'file:line'的文本,請檢查該行。 – 0x47686F7374 2014-10-06 09:08:10

回答

3

基於你開始話題的評論,你可以簡單地檢測/改寫缺少的功能:

Date.prototype.toLocaleFormat = Date.prototype.toLocaleFormat || function(pattern) { 
    return pattern.replace(/%Y/g, this.getFullYear()).replace(/%m/g, (this.getMonth() + 1)).replace(/%d/g, this.getDate()); 
}; 

重寫將在全球範圍內可用,您可以使用此進行測試

+0

..這在這裏代表什麼?? ??它是代表日期=新日期()即日期? – 2014-10-06 09:49:58

+0

因爲你正在建立一個函數原型,所以它是Date對象本身 – Icepickle 2014-10-06 09:52:40

+0

謝謝..但現在我得到了一個不同的問題。在這個即時添加3天,10天,1個月,3個月等等。 當它超過3個月,這意味着2015年它給了我空值的日期! – 2014-10-06 09:55:06

相關問題