|
-
Jan 29th, 2006, 08:06 PM
#1
Thread Starter
Junior Member
[RESOLVED] Javascript: Object Expected PART 2
As mentioned in my previous post with the same title, I am trying to move all of my javascript to external files. This hasn't been so easy. The last script was made to be written internally and I just rearranged it so it could be read as an external file. In doing so, I didn't realize that some of the things i wrote were case sensitive.
My next issue won't be so simple, because in this case, I am actuall take the internal script which is layed out just fine, and moving it to an external file. When I do this, I get the same non descript error "Object Expected"
Here is the document at hand:
Code:
<script language="javascript" type="text/javascript">
<!--
var isIE4 = false;
var cache;
if(navigator.appName.indexOf("Microsoft") != -1 && parseInt(navigator.appVersion) >= 4)
isIE4 = true;
function ReadDollarDecision(whichVal) {
dwnPayFld = document.frmCalc.downpay;
price = document.frmCalc.price;
if(whichVal < ReadDollarField(dwnPayFld)) {
dwnPayFld.value = price.value;
}
}
function CheckFloatField(field) {
var val = field.value;
// lop off trailing "0"s after a decimal point first
if(val.indexOf(".") != -1) {
while(val.charAt(val.length-1) == "0")
val = val.substring(0,val.length-1);
if(val.charAt(val.length-1) == ".")
val = val.substring(0,val.length-1);
}
if("" + parseFloat(val) != val)
field.value = field.defaultValue;
}
function CheckIntField(field) {
var val = field.value;
if("" + parseInt(val) != val)
field.value = field.defaultValue;
}
function CheckDollarField(field) {
var flt = ReadDollarField(field);
if(isNaN(flt))
field.value = cache;
else {
str = FloatToDollarString(flt);
field.value = str;
}
}
function ReadDollarField(field) {
var str = field.value;
if(str.charAt(0) == "$")
str = str.substring(1, str.length);
var pos = str.lastIndexOf(",");
while(pos != -1) {
str = str.substring(0,pos) + str.substring(pos+1, str.length);
pos = str.lastIndexOf(",", pos);
}
return parseFloat(str);
}
function FloatToDollarString(flt) {
// round off to nearest dollar
var str = "" + Math.round(flt)
// add commas
pos = str.length; // str.indexOf(".");
pos -= 4;
while(pos >= 0) {
str = str.substring(0,pos+1) + "," + str.substring(pos+1, str.length);
pos -= 3;
}
return str;
}
function recalcTermMonths(frm) {
var tYr = parseFloat(frm.termYears.value);
var tMon = Math.round(tYr * 12.0);
tYr = parseFloat(tMon) / 12.0;
frm.termYears.value = "" + tYr;
frm.termMonths.value = "" + tMon;
}
function recalcTermYears(frm) {
var tMon = parseInt(frm.termMonths.value);
var tYr = parseFloat(tMon) / 12.0;
frm.termYears.value = "" + tYr;
frm.termMonths.value = "" + tMon;
}
function RecalcMonthlyPay(frm) {
var Principle = ReadDollarField(frm.price) - ReadDollarField(frm.downpay);
var AnnualInt = parseFloat(frm.intYear.value);
var MonthlyInt = AnnualInt / (12.0 * 100.0);
var LenMonths = parseInt(frm.termMonths.value);
if(MonthlyInt == 0)
var MonthlyPay = Principle / LenMonths;
else
var MonthlyPay = Principle * ( MonthlyInt / ( 1 - Math.pow((1 + MonthlyInt), -LenMonths) ) );
MonthlyPay = Math.round(MonthlyPay * 100) / 100;
frm.payMonth.value = FloatToDollarString(MonthlyPay);
}
function RecalcDownPay(frm) {
var AnnualInt = parseFloat(frm.intYear.value);
var MonthlyInt = AnnualInt / (12.0 * 100.0);
var LenMonths = parseInt(frm.termMonths.value);
var MonthlyPay = ReadDollarField(frm.payMonth);
var Principle = ReadDollarField(frm.price) - ReadDollarField(frm.downpay);
var OldDownPay = ReadDollarField(frm.downpay);
var EffPrinciple
if(MonthlyInt == 0)
EffPrinciple = MonthlyPay * LenMonths;
else
EffPrinciple = MonthlyPay * ((1 - Math.pow((1 + MonthlyInt), -LenMonths)) / MonthlyInt);
var NewDownPay = OldDownPay + (Principle - EffPrinciple);
frm.downpay.value = "" + NewDownPay;
CheckDollarField(frm.downpay);
RecalcDownPayPerc(frm);
RecalcMonthlyPay(frm);
}
function RecalcDownPayPerc(frm) {
var HomePrice = ReadDollarField(frm.price);
var DownPay = ReadDollarField(frm.downpay);
var DownPayPerc = 100 * DownPay / HomePrice;
if(DownPayPerc >= 0 && DownPayPerc <= 100) {
var DownPayPercStr = "" + DownPayPerc;
var pos = DownPayPercStr.indexOf(".");
if(DownPayPercStr.length > pos + 4)
DownPayPercStr = DownPayPercStr.substring(0,pos+4);
frm.downpayperc.value = DownPayPercStr;
}
else if(DownPayPerc < 0) {
frm.downpayperc.value = "3";
RecalcDownPayAmount(frm);
}
else {
frm.downpayperc.value = "3";
RecalcDownPayAmount(frm);
}
}
function RecalcDownPayAmount(frm) {
var HomePrice = ReadDollarField(frm.price);
var DownPayPerc = parseFloat(frm.downpayperc.value);
if(DownPayPerc < 0) {
frm.downpayperc.value = "0";
RecalcDownPayAmount(frm)
}
else if(DownPayPerc > 100) {
frm.downpayperc.value = "100";
RecalcDownPayAmount(frm)
}
else {
var DownPay = HomePrice * DownPayPerc / 100;
DownPay = FloatToDollarString(DownPay);
frm.downpay.value = "" + DownPay;
}
}
-->
</script>
<h1>Home Mortgage Calculator</h1>
<center><form name="frmCalc" action="#">
<table border="0" width="320">
<tr><td>Home Price: </td><td>$ <input type="text" name="price" id="price" size="8" value="250,000" onchange="CheckDollarField(this); ReadDollarDecision(ReadDollarField(this)); RecalcMonthlyPay(this.form); RecalcDownPayPerc(this.form);" onfocus="cache=this.value" class="textfields" /></td></tr>
<tr><td>Down Payment:</td><td class="text">$ <input type="text" name="downpay" id="downpay" size="8" value="" onchange="CheckDollarField(this);RecalcDownPayPerc(this.form);RecalcMonthlyPay(this.form)" onfocus="cache=this.value" class="textfields" /> or <input type="text" name="downpayperc" id="downpayperc" size="2" value="3" onchange="CheckFloatField(this);RecalcDownPayAmount(this.form);RecalcMonthlyPay(this.form)" onfocus="cache=this.value" class="textfields" /> %</td></tr>
<tr><td>Loan Term:</td><td class="text"><input type="text" name="termYears" id="termYears" size="2" value="30" onchange="CheckFloatField(this);recalcTermMonths(this.form);RecalcMonthlyPay(this.form)" onfocus="cache=this.value" class="textfields" />
years or
<input type="text" name="termMonths" id="termMonths" size="4" value="360" onchange="CheckIntField(this);recalcTermYears(this.form);RecalcMonthlyPay(this.form)" onfocus="cache=this.value" class="textfields" /> months</td></tr>
<tr><td>Annual Interest Rate:</td><td><input type="text" name="intYear" id="intYear" size="5" value="5.75%" onchange="CheckFloatField(this);RecalcMonthlyPay(this.form)" onfocus="cache=this.value" class="textfields" /> %</td></tr>
<tr><td>Monthly Payment:</td>
<td>$ <input type="text" name="payMonth" id="payMonth" size="6" readonly="readonly" value="0" onchange="CheckDollarField(this);RecalcDownPay(this.form)" onfocus="cache=this.value" /></td></tr>
</table>
<br />
<a href="#" onclick="RecalcMonthlyPay(document.frmCalc); return(false);" onfocus="this.blur()">CALCULATE</a>
</form>
Last edited by niclipse; Feb 3rd, 2006 at 12:59 PM.
Reason: resolved
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|