zoukankan      html  css  js  c++  java
  • [API]新浪股票api调用

    简单的新浪股票API调用

    以后有时间,还记得的话,再做成JQuery 插件吧

    -----

    用到的东西:

    1. sina stock API

    2. JQuery [$.getScript()]

    3. JS [Date.prototype.format]

    -----

    效果图:

    -----

    代码:

      1 <!DOCTYPE html>
      2     <head>
      3         <title>CGM003</title>
      4         <script src="js/libs/jquery-1.11.0.js"></script>
      5         <style>
      6         body{
      7             font-size:13px;
      8         }
      9         td{
     10             padding:1px 2px;
     11             border-bottom:1px solid gray;
     12             text-align:right;
     13             vertical-align:bottom;
     14             white-space:nowrap;
     15         }
     16         .red{
     17             color:red;
     18         }
     19         .green{
     20             color:green;
     21         }
     22         #infoTbl{
     23             font-size:15px;
     24         }
     25         </style>
     26     </head>
     27     <body>
     28         <section>
     29             <header>
     30                 间隔:<input type="number" id="refreshTime" min="100" max="5000" value="1000" />毫秒
     31                 <span id="refresh" style="cursor:pointer; text-decoration:underline; color:blue;"></span>
     32                 <span id="lastTime"></span>
     33                 (字体: <span style="cursor:pointer; text-decoration:underline; color:blue;" onclick="$('#infoTbl').css('font-size','15px');"></span>&nbsp;&nbsp;&nbsp;<span style="cursor:pointer; text-decoration:underline; color:blue;" onclick="$('#infoTbl').css('font-size','20px');"></span>&nbsp;&nbsp;&nbsp;<span style="cursor:pointer; text-decoration:underline; color:blue;" onclick="$('#infoTbl').css('font-size','25px');"></span>&nbsp;&nbsp;&nbsp;<span style="cursor:pointer; text-decoration:underline; color:blue;" onclick="$('#infoTbl').css('font-size','55px');"></span> 34                 <br />
     35                 <select id="market">
     36                     <option value="sh" selected >上海</option>
     37                     <option value="sz" >深圳</option>
     38                 </select>
     39                 代码:
     40                 <input type="text" size="7" id="code" value='' />
     41                 <span style="cursor:pointer; text-decoration:underline; color:blue;" onclick="addStock();">添加</span>
     42             </header>
     43             <article>
     44                 <table id="infoTbl">
     45                 </table>
     46             </article>
     47         </section>
     48         
     49         <script>
     50             // prototype of Date to add [format] meathod
     51             Date.prototype.format = function(format){ 
     52                 var o = { 
     53                     "M+" : this.getMonth()+1, //month 
     54                     "d+" : this.getDate(), //day 
     55                     "h+" : this.getHours(), //hour 
     56                     "m+" : this.getMinutes(), //minute 
     57                     "s+" : this.getSeconds(), //second 
     58                     "q+" : Math.floor((this.getMonth()+3)/3), //quarter 
     59                     "S" : this.getMilliseconds() //millisecond 
     60                 } 
     61 
     62                 if(/(y+)/.test(format)) { 
     63                     format = format.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); 
     64                 } 
     65 
     66                 for(var k in o) { 
     67                     if(new RegExp("("+ k +")").test(format)) { 
     68                         format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length)); 
     69                     } 
     70                 } 
     71                 return format; 
     72             };
     73             // array remove all
     74             Array.prototype.removeAll = function()
     75             {
     76                 while(this.length > 0)
     77                     this.pop();
     78             }
     79             // var init
     80             var stockList = ["sh000001","sh600461","sh601186","sh601628","sz399001"],
     81             rowHtml = "<tr style='color:{%C%};'><td>{%Nm%}</td><td><b>{%Now%}</b></td><td>{%DiffPrice%}</td><td>{%DiffPer%}</td><td>{%Vol%}</td><td style='color:{%HighC%};'>{%High%}</td><td style='color:{%lowC%};'>{%Low%}</td><td>{%delete%}</td><td>{%More%}</td></tr>",
     82             nowT,
     83             IntervalObj = null,
     84             refreshSpan;
     85 
     86             // 不在申请的js Url后加时间
     87             $.ajaxSetup({ 
     88                 cache: true 
     89             });
     90 
     91             // init fun
     92             $(function(){
     93                 refreshSpan = $("#refreshTime").val();
     94                 $("#refresh").html("开始刷新").click(function(e){
     95                     if(null != IntervalObj){
     96                         clearInterval(IntervalObj);
     97                         IntervalObj = null;
     98                         $(this).html("开始刷新");
     99                     }else{
    100                         doRefresh(); 
    101                         IntervalObj = setInterval(doRefresh,refreshSpan);
    102                         $(this).html("停止刷新");
    103                     }
    104                 });
    105                 $("#refresh").click();
    106             });
    107             function doRefresh(){
    108                 refreshSpan = $("#refreshTime").val();
    109                 nowT = new Date().format("yyyyMMddhhmmssSS");
    110                 $("#infoTbl").html("");
    111                 for(var i = 0; i < stockList.length; i++){
    112                     $.getScript('http://hq.sinajs.cn/a='+nowT+'&list=' + stockList[i],callBack1(stockList[i]));
    113                 }
    114             }
    115             function callBack1(nm){
    116                 var goOn = true;
    117                 eval("if('undefined' == typeof(hq_str_"+nm+")) goOn = false;");
    118                 if(goOn){
    119                 //try{
    120                     eval("var tmpStr = hq_str_"+nm+";");
    121                     var tmp = tmpStr.split(",");
    122                     var rowStr = rowHtml;
    123                     rowStr = rowStr.replace(new RegExp("{%Nm%}", 'g'), tmp[0]);
    124                     rowStr = rowStr.replace(new RegExp("{%Now%}", 'g'), tmp[3]);
    125                     rowStr = rowStr.replace(new RegExp("{%C%}", 'g'), (tmp[3]-tmp[2])>0?"red":((tmp[3]-tmp[2])<0?"green":"gray")); 
    126                     rowStr = rowStr.replace(new RegExp("{%DiffPrice%}", 'g'), Math.round((tmp[3]-tmp[2])*100) / 100);
    127                     rowStr = rowStr.replace(new RegExp("{%DiffPer%}", 'g'), Math.round((tmp[3]-tmp[2])/tmp[2] * 10000) / 100 +"%");
    128                     rowStr = rowStr.replace(new RegExp("{%Vol%}", 'g'), tmp[8]/100);
    129                     rowStr = rowStr.replace(new RegExp("{%High%}", 'g'), tmp[4]);
    130                     rowStr = rowStr.replace(new RegExp("{%HighC%}", 'g'), (tmp[4]>tmp[3])?"red":((tmp[4]<tmp[3])?"green":"gray"));
    131                     rowStr = rowStr.replace(new RegExp("{%Low%}", 'g'), tmp[5]);
    132                     rowStr = rowStr.replace(new RegExp("{%LowC%}", 'g'), (tmp[5]>tmp[3])?"red":((tmp[5]<tmp[3])?"green":"gray"));
    133                     rowStr = rowStr.replace(new RegExp("{%delete%}", 'g'),"<span title='删除' style='cursor:pointer;' onclick='$(this).parent().parent().remove();delStock(""+nm+"")'>删除</span>");
    134                     //rowStr = rowStr.replace(new RegExp("{%More%}", 'g'), "<img height='100' src='http://image.sinajs.cn/newchart/min/n/"+nm+".gif' />");  // 图片
    135                     rowStr = rowStr.replace(new RegExp("{%More%}", 'g'),"");
    136 
    137                     $("#infoTbl").append(rowStr);
    138                     $("#lastTime").html((new Date()).format("hh:mm:ss"));
    139                 //}catch(e){clearInterval(IntervalObj);}
    140                 }
    141             }
    142             function delStock(nm){
    143                 var delIndex = -1;
    144                 for(var i = 0; i < stockList.length; i++){
    145                     if(stockList[i]==nm){
    146                         delIndex = i;
    147                         break;
    148                     }
    149                 }
    150                 if(delIndex != -1)
    151                     stockList.splice(delIndex,1);
    152             }
    153             function addStock(){
    154                 var delIndex = -1;
    155                 var cd = $("#market").val() + "" + $("#code").val();
    156                 for(var i = 0; i < stockList.length; i++){
    157                     if(stockList[i]==cd){
    158                         delIndex = i;
    159                         break;
    160                     }
    161                 }
    162                 if(delIndex == -1){
    163                     stockList.push(cd);
    164                     $("#refresh").click().click();
    165                     console.log(cd);
    166                 }else{
    167                     alert("已存在");
    168                 }
    169             }
    170         </script>
    171     </body>
    172 </html>

    -----

    CSDN下载地址:

    http://download.csdn.net/detail/wangxsh42/7542299

  • 相关阅读:
    C#实战Microsoft Messaging Queue(MSMQ)消息队列(干货)
    实现动态的XML文件读写操作(依然带干货)
    多线程下访问控件的方式(您一定会用到,附源码啦!)
    Microsoft.VisualBasic.dll的妙用(开发中肯定会用到哦)
    vue使用element-ui的el-input监听不了键盘事件解决
    vue强制刷新组件
    asp.net微信公众平台本地调试设置
    武大女硕士面试被拒,改简历冒充本科生找工作的感想(原创)
    完整的站内搜索Demo(Lucene.Net+盘古分词)
    ASP.NET多线程下使用HttpContext.Current为null解决方案
  • 原文地址:https://www.cnblogs.com/wangxinsheng/p/3805296.html
Copyright © 2011-2022 走看看