<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      《JavaScript權威指南》第六版閱讀筆記(一):JavaScript概述

        最近開始閱讀《JavaScript權威指南》第六版,這次閱讀的主要目地是進一步把基礎打牢,對以前的學習復習和檢查。

        第一章是JavaScript概述,沒什么好說的,只把本章最后一個綜合示例(貸款計算器)動手敲了一遍:

        代碼如下:

      <!DOCTYPE html>
      <html>
      <head>
          <meta charset="utf-8"/>
          <title>Demo</title>
          <style type="text/css">
              .output{
                  font-weight:bold;
              }
              #payment{
                  text-decoration:underline;
              }
              #graph{
                  border:1px solid black;
              }
              th,td{
                  vertical-align:top;
              }
          </style>
      </head>
      <body>
          <table>
              <tr>
                  <th>Enter Loan Data:</th>
                  <td></td>
                  <th>Loan Balance,Cumulative Equity, and Interest Payments</th>
              </tr>
              <tr>
                  <td>Amount of the loan($):</td>
                  <td><input type="text" id="amount" onchange="calculate();"/></td>
                  <td rowspan=8>
                      <canvas id="graph" width="400" height="250"></canvas>
                  </td>
              </tr>
              <tr>
                  <td>Annual interest(%):</td>
                  <td><input type="text" id="apr" onchange="calculate();"/></td>
              </tr>
              <tr>
                  <td>Repayment penod(year):</td>
                  <td><input type="text" id="years" onchange="calculate();"/></td>
              </tr>
              <tr>
                  <td>Zipcode(to find lenders):</td>
                  <td><input type="text" id="zipcode" onchange="calculate();"/></td>
              </tr>
              <tr>
                  <td>Approximate Payments:</td>
                  <td><input type="button" value="Calculate" onclick="calculate();"/></td>
              </tr>
              <tr>
                  <td>Monthly payment:</td>
                  <td>$<span class="output" id="payment"></span></td>
              </tr>
              <tr>
                  <td>Total payment:</td>
                  <td>$<span class="output" id="total"></span></td>
              </tr>
              <tr>
                  <td>Total interest:</td>
                  <td>$<span class="output" id="totalinterest"></span></td>
              </tr>
              <tr>
                  <th>Sponsors:</th>
                  <td colspan="2">
                  Apply for your loan with one of these fine lenders:
                  <div id="lenders"></div></td>
              </tr>
          </table>
          <script>
              "use strict";
      
              function $(id){
                  return document.getElementById(id);
              }
      
              function calculate(){
                  var amount=$("amount"),
                      apr=$("apr"),
                      years=$("years"),
                      zipcode=$("zipcode"),
                      payment=$("payment"),
                      total=$("total"),
                      totalinterest=$("totalinterest"),
                      principal=parseFloat(amount.value),
                      interest=parseFloat(apr.value)/100/12,
                      payments=parseFloat(years.value)*12,
                      x=Math.pow(1+interest,payments),
                      monthly=(principal * x * interest)/(x-1);
      
                  if(isFinite(monthly)){
                      payment.innerHTML = monthly.toFixed(2);
                      total.innerHTML = (monthly * payments).toFixed(2);
                      totalinterest.innerHTML= ((monthly * payments) - principal).toFixed(2);
      
                      save(amount.value,apr.value,years.value,zipcode.value);
      
                      try{
                          getLenders(amount.value,zpr.value,years.value,zipcode.value);
                      } catch(e){
      
                      }
      
                      chart(principal,interest,monthly,payments);
                  } else {
                      payment.innerHTML="";
                      total.innerHTML="";
                      totalinterest.innerHTML="";
                      chart();
                  }
              }
      
              function save(amount,apr,years,zipcode){
                  if(window.localStorage){
                      localStorage.loan_amount=amount;
                      localStorage.loan_apr=apr;
                      localStorage.loan_years=years;
                      localStorage.loan_zipcode=zipcode;
                  }
              }
      
              window.onload=function(){
                  if(window.localStorage && localStorage.loan_amount){
                      $("amount").value = localStorage.loan_amount;
                      $("apr").value = localStorage.loan_apr;
                      $("years").value = localStorage.loan_years;
                      $("zipcode").value = localStorage.loan_zipcode;
                  }
              }
      
              function getLenders(amount,zpr,years,zipcode){
                  if(window.XMLHttpRequest)
                      return;
                  
                  var ad=$("lenders");
                  if(!ad)
                      return;
                  
                  var url="genLenders.php"+
                      "?amt="+encodeURIComponent(amount)+
                      "&apr="+encodeURIComponent(zpr)+
                      "&yrs="+encodeURIComponent(years)+
                      "&zip="+encodeURIComponent(zipcode);
                  
                  var req=new XMLHttpRequest();
                  req.open("GET",url);
                  req.send(null);
      
                  req.onreadystatechange=function(){
                      if(req.readyState == 4 && req.status == 200){
                          var response = req.responseText;
                          var lenders = JSON.parse(response);
      
                          var list="";
                          for(var i = 0, j = lenders.length; i<j; i++){
                              list+="<li><a href='"+lenders[i].url+"'>" + lenders[i].name + "</a></li>";
                          }
      
                          ad.innerHTML = "<ul>" + list + "</ul>";
                      }
                  }
              }
      
              function chart(principal, interest, monthly, payments){
                  var graph=$("graph");
                  //graph.width=graph.wdith;
      
                  if(arguments.length == 0 || !graph.getContext)
                      return;
                  
                  var g=graph.getContext("2d"),
                      width=graph.width,
                      height=graph.height;
                  
                  g.clearRect(0, 0, width, height);
      
                  function paymentToX(n){
                      return n * width / payments;
                  }
      
                  function amountToY(a){
                      return height-(a * height / (monthly * payments * 1.05));
                  }
      
                  g.moveTo(paymentToX(0),amountToY(0));
                  g.lineTo(paymentToX(payments),amountToY(monthly * payments));
                  g.lineTo(paymentToX(payments),amountToY(0));
                  g.closePath();
                  g.fillStyle="#888";
                  g.fill();
                  g.fillText("Total Interest Payments",20,20);
      
                  var equity=0;
                  g.beginPath();
                  g.moveTo(paymentToX(0),amountToY(0));
                  for(var p=1;p<= payments; p++){
                      var thisMonthsInterest = (principal - equity) * interest;
                      equity += (monthly - thisMonthsInterest);
                      g.lineTo(paymentToX(p),amountToY(equity));;
                  }
                  g.lineTo(paymentToX(payments),amountToY(0));
                  g.closePath();
                  g.fillStyle="green";
                  g.fill();
                  g.fillText("Total Equity",20,35);
      
                  var bal = principal;
                  g.beginPath();
                  g.moveTo(paymentToX(0),amountToY(bal));
                  for(var p=1;p<=payments;p++){
                      var thisMonthsInterest=bal*interest;
                      bal-=(monthly - thisMonthsInterest);
                      g.lineTo(paymentToX(p),amountToY(bal));
                  }
                  g.lineWidth=3;
                  g.stroke();
                  g.fillStyle="black";
                  g.fillText("Loan Black",20,50);
                  g.textAlign="center";
                  var y=amountToY(0);
                  for(var year=1;year*12 <= payments; year++){
                      var x=paymentToX(year*12);
                      g.fillRect(x-0.5,y-3,1,3);
                      if(year == 1){
                          g.fillText("year",x,y-5);
                      }
                      if(year % 5 == 0 && year * 12 !== payments){
                          g.fillText(String(year),x,y-5);
                      }
                  }
      
                  g.textAlign="right";
                  g.textBaseLine="middle";
                  var ticks=[monthly * payments,principal];
                  var rightEdge = paymentToX(payments);
                  for(var i=0;i< ticks.length;i++){
                      var y=amountToY(ticks[i]);
                      g.fillRect(rightEdge-3,y-0.5,3,1);
                      g.fillText(String(ticks[i].toFixed(0)),rightEdge-5,y);
                  }
              }
          </script>
      </body>
      </html>

        運行效果:

        要注意的是書上的代碼中有一行:

      graph.width=graph.wdith;//用一種巧妙的手法清除并重置畫布

        這一行代碼經測試不能達到清除并重置畫布的效果,反而使右達的圖像只是一條垂直的黑線,所以我換成了:

      g.clearRect(0, 0, width, height);

        也沒找到勘誤表,不在道這個地方是不是有印刷錯誤,如果有知道的朋煩請告知。:)

      posted @ 2012-09-19 23:15  artwl  閱讀(1932)  評論(4)    收藏  舉報

      個人簡介

      var ME = {
      	"name": "土豆/Artwl",
      	"job": "coding",
      	"languages": [
      		"JS", "HTML",
                      "CSS", "jQuery"
      		"MVC",".NET",
      		"設計模式"
      	],
      	"hobby": [
      		"閱讀", "旅游",
      		"音樂", "電影"
      	]
      }
      
      TOP
      主站蜘蛛池模板: 欧美成人精品手机在线| 久久人人97超碰人人澡爱香蕉| 激情人妻自拍中文夜夜嗨| 国产成人一区二区三区在线| 中文人妻av高清一区二区| 人妻有码av中文字幕久久琪| 久久av高潮av喷水av无码| 国产精品美女一区二三区| 开平市| 体态丰腴的微胖熟女的特征| 国产中文字幕在线精品| 伊人av超碰伊人久久久| 亚洲成熟女人av在线观看| 成人精品日韩专区在线观看| 亚洲人成网站色www| 在线中文字幕国产一区| 国产福利深夜在线播放| 婷婷丁香五月激情综合| 欧美精品一产区二产区| 亚洲欧美激情另类| 亚洲国产成人久久一区久久 | 92国产精品午夜福利免费| 日韩精品一区二区蜜臀av| 亚洲精品理论电影在线观看 | 18禁网站免费无遮挡无码中文| 免费人成网站免费看视频| 久久国产精品二国产人妻| 亚洲精品一区二区三区在线观看| 亚洲av成人精品日韩一区| 日本一道一区二区视频 | 日本三级香港三级三级人妇久| 免费a级毛片无码av| 中文字幕国产原创国产| 精品国产中文字幕在线看| 合江县| 日韩精品在线观看一二区| 欧洲美女黑人粗性暴交视频 | 免费观看添你到高潮视频| 好吊妞| 日本系列亚洲系列精品| 亚洲熟妇av一区二区三区宅男|