⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 display.php-n=22-16&f=22-16.html

📁 javascript 5 随书源码 javascript
💻 HTML
字号:
<html><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Keywords" name="Keywords"content="JavaScript, examples, JavaScript: The Definitive Guide"><title>Example 22-16 from JavaScript: The Definitive Guide, Fifth Edition</title><style>body {  font-family: arial, sans-serif}.lefttitle {  font: bold x-small arial, sans-serif;  margin: 5px;  letter-spacing: .15em;  text-transform:uppercase;}.leftcaption {  font: italic x-small sans-serif;  margin-bottom: 20px;}#banner {	font-family:sans-serif;	color:#333;	font-size:x-large;	font-weight:normal;		padding:15px;	padding-top: 3px;        border-bottom:4px double #666;}#banner h1 {	font-size: x-large;	margin: 0px;	padding: 0px;}#banner .description {	font-size:large;	margin-left: 2px;}pre {  border: solid black 1px;  background-color: #ddd;  padding: 10px;  margin: 0px;}	</style></script></head><body><div id="banner"><h1>davidflanagan.com/javascript5</h1><span class="description">Example 22-16 from<i>JavaScript: The Definitive Guide, Fifth Edition</i></span></div><div style="float: left; text-align: center; width:200px; margin-right:20px"><div class="lefttitle">Buy The Book</div><iframe src="../../rcm.amazon.com/e/cm-t=davidflanagancom&o=1&p=8&l=as1&asins=0596101996&fc1=000000&IS2=1&lt1=_blank&lc1=0000ff&bc1=000000&bg1=ffffff&f=ifr" tppabs="http://rcm.amazon.com/e/cm?t=davidflanagancom&o=1&p=8&l=as1&asins=0596101996&fc1=000000&IS2=1&lt1=_blank&lc1=0000ff&bc1=000000&bg1=ffffff&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><div class="leftcaption">This example is posted here for the convenienceof my readers.</div><div class="lefttitle">Tip the Author</div><form action="https://www.paypal.com/cgi-bin/webscr" method="post"><input type="hidden" name="cmd" value="_s-xclick"><input type="image" src="../../www.paypal.com/en_US/i/btn/x-click-but21.gif" tppabs="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!"><img alt="" border="0" src="../../www.paypal.com/en_US/i/scr/pixel.gif" tppabs="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"><input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7-----"></form><div class="leftcaption">Found a helpful example, but don't own the book?</div><div class="lefttitle">Advertising</div><script type="text/javascript"><!--google_ad_client = "pub-5162555666633441";google_alternate_color = "ffffff";google_ad_width = 160;google_ad_height = 600;google_ad_format = "160x600_as";google_ad_type = "text_image";google_ad_channel ="";//--></script><script type="text/javascript"  src="../../pagead2.googlesyndication.com/pagead/show_ads.js" tppabs="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script></div><div style="margin-left: 220px;"><div class="lefttitle" style="padding:0px; text-align: right"><a href="index.html" tppabs="http://www.davidflanagan.com/javascript5/index.html">Table of Examples</a></div><pre>&lt;head&gt;&lt;script&gt;/** * data is an array of numbers to be plotted as a time-series * dx is the number of x pixels between data points * config is an object that holds values that are likely to * be the same for multiple invocations: *   height: the height, in pixels of the generated image *   ymin, ymax: the range, or Y axis bounds in user-space *   backgroundColor: the background color as a numeric HTML color. *   lineWidth: the width of the line to draw *   lineColor: the color of the line to draw as an HTML # color spec *   dotColor: if specified, a dot of this color will be placed on  *             the last data point *   bandColor: If specified, a band of this color will be drawn between *      the bandMin and bandMax values to represent a "normal" range of *      data values, and emphasize the values that exceed that range */function makeSparkline(data, dx, config) {    var width = data.length * dx + 1; // overall image width    var yscale = config.height/(config.ymax - config.ymin); // For scaling data    // Convert data point number to a pixel value    function x(i) { return i * dx; }    // Convert a Y coordinate from user space to pixel space    function y(y) { return config.height - (y - config.ymin)*yscale; }    // Convert an HTML color spec to a java.awt.Color object    function color(c) {        c = c.substring(1);  // Remove leading #         if (c.length == (3)) {  // convert to 6-char rep, if needed            c = c.charAt(0) + c.charAt(0) + c.charAt(1) + c.charAt(1) +                c.charAt(2) + c.charAt(2);        }        var red = parseInt(c.substring(0,2), 16);        var green = parseInt(c.substring(2,4), 16);        var blue  = parseInt(c.substring(4,6), 16);        return new java.awt.Color(red/255, green/255, blue/255);    }    // Create an offscreen image for the sparkline    var image = new java.awt.image.BufferedImage(width, config.height,                                    java.awt.image.BufferedImage.TYPE_INT_RGB);    // Get a Graphics object that lets us draw into that image    var g = image.createGraphics();    // Antialias everything. Tradeoff: makes the line smoother but fuzzier    g.setRenderingHint(java.awt.RenderingHints.KEY_ANTIALIASING,                       java.awt.RenderingHints.VALUE_ANTIALIAS_ON);    // Fill the image with the background color    g.setPaint(color(config.backgroundColor));    g.fillRect(0, 0, width, config.height);    // If a bandColor was specified, draw the band    if (config.bandColor) {        g.setPaint(color(config.bandColor));        g.fillRect(0, y(config.bandMax),                   width, y(config.bandMin)-y(config.bandMax));    }    // Now build the line     var line = new java.awt.geom.GeneralPath();    line.moveTo(x(0), y(data[0]));    for(var i = 1; i &lt; data.length; i++) line.lineTo(x(i), y(data[i]));    // Set the line color and width, then draw the line    g.setPaint(color(config.lineColor));                     // Set line color    g.setStroke(new java.awt.BasicStroke(config.lineWidth)); // Set width    g.draw(line);                                            // Draw!    // If the dotColor was set, draw the dot    if (config.dotColor) {        g.setPaint(color(config.dotColor));        var dot=new java.awt.geom.Ellipse2D$Double(x(data.length-1)-.75,                                                   y(data[data.length-1])-.75,                                                   1.5, 1.5)        g.draw(dot);    }    // Write the image out as a byte array in PNG format    var stream = new java.io.ByteArrayOutputStream();    Packages.javax.imageio.ImageIO.write(image, "png", stream);    var imageData = stream.toByteArray();    // Convert the data to a URL-encoded string    var rawString = new java.lang.String(imageData, "iso8859-1");    var encodedString = java.net.URLEncoder.encode(rawString, "iso8859-1");    encodedString = encodedString.replaceAll("\\+", "%20");    // And return it all as a data: URL    return "data:image/png," + encodedString;}// Here is an example that uses the makeSparkline() functionwindow.onload = function() {    // Create the img tag for the sparkline    var img = document.createElement("img");    img.align = "center";    img.hspace = 1;    // Set its src attribute to the data: URL of the sparkline    img.src = makeSparkline([3, 4, 5, 6, 7, 8, 8, 9, 10, 10, 12,                             16, 11, 10, 11, 10, 10, 10, 11, 12,                              16, 11, 10, 11, 10, 10, 10, 11, 12,                              14, 16, 18, 18, 19, 18, 17, 17, 16,                             14, 16, 18, 18, 19, 18, 17, 17, 16],                            2, { height: 20, ymin: 0, ymax: 20,                                 backgroundColor: "#fff",                                 lineWidth: 1, lineColor: "#000",                                 dotColor: "#f00", bandColor: "#ddd",                                 bandMin: 6, bandMax: 14                            });    // Find the placeholder element for the sparkline    var placeholder = document.getElementById("placeholder");    // And replace it with the image.    placeholder.parentNode.replaceChild(img, placeholder);}&lt;/script&gt;&lt;/head&gt;&lt;body&gt;Server load: &lt;span id="placeholder"&gt;&lt;/span&gt;&lt;span style="color:#f00"&gt;16&lt;/span&gt;&lt;/body&gt;</pre><div class="lefttitle" style="padding:0px; text-align: right"><a href="index.html" tppabs="http://www.davidflanagan.com/javascript5/index.html">Table of Examples</a></div><p><script type="text/javascript">amazon_ad_tag="davidflanagancom"; amazon_ad_width="300"; amazon_ad_height="250"; amazon_ad_logo="hide";</script><script type="text/javascript" src="../../www.assoc-amazon.com/s/ads.js" tppabs="http://www.assoc-amazon.com/s/ads.js"></script></div></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -