GVKun编程网logo

将javascript插入javascript html返回(怎么把js的值返回给html)

2

本文的目的是介绍将javascript插入javascripthtml返回的详细情况,特别关注怎么把js的值返回给html的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的

本文的目的是介绍将javascript插入javascript html返回的详细情况,特别关注怎么把js的值返回给html的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解将javascript插入javascript html返回的机会,同时也不会遗漏关于html5+javascript制作简易画板附图_javascript技巧、Javascript & DHTML上传文件控件_javascript技巧、javascript html 静态页面传参数_javascript技巧、javascript html5 canvas实现可拖动省份的中国地图_javascript技巧的知识。

本文目录一览:

将javascript插入javascript html返回(怎么把js的值返回给html)

将javascript插入javascript html返回(怎么把js的值返回给html)

我有一个使用 javascript返回函数返回的HTML表.它完美地工作,直到我尝试在其中间添加一个额外的if子句.

function format ( d ) {
    return '<div>'+     
    '<table id="expand">'+
        '<tr>'+
          '<td><buttonvalue="Save" onclick="saveItem(this)" data-soli="'+d.soli+'" data-comments="'+d.comments+'" >Save</button></td>'+
        '</tr>'+
        '<tr>'+
            '<td>Customer</td>'+
            '<td>'+d.customer+'</td>'+
            '<td>Value</td>'+

            if (d.country !== "usd") {
              '<td>'+d.value+'</td>'+
            } else {
              '<td>'+d.value+'</td>'+
            }                

            '<td>Comments</td>'+
            '<td><input onblur="submitComments(this.value)" type="text"><br>'+d.comments+'</input></td>'+            
        '</tr>'+                                               
    '</table>'+    
   '</div>'; 
}

添加if子句时代码失败.这是语法问题吗?我如何打破HTML一秒钟,以便我可以在回报中添加额外的JavaScript?我的目标是在线路货币为美元时添加红色的td类,但我无法弄清楚如何让它工作.

解决方法

这样做吧

function format ( d ) {
var css;
if (d.country !== "usd") {
css;
}
else{
css;
}
    return '<div>'+     
    '<table id="expand">'+
        '<tr>'+
          '<td><buttonvalue="Save" onclick="saveItem(this)" data-soli="'+d.soli+'" data-comments="'+d.comments+'" >Save</button></td>'+
        '</tr>'+
        '<tr>'+
            '<td>Customer</td>'+
            '<td>'+d.customer+'</td>'+
            '<td>Value</td>'+
            '<td>'+d.value+'</td>'+           
            '<td>Comments</td>'+
            '<td><input onblur="submitComments(this.value)" type="text"><br>'+d.comments+'</input></td>'+            
        '</tr>'+                                               
    '</table>'+    
   '</div>'; 
}

html5+javascript制作简易画板附图_javascript技巧

html5+javascript制作简易画板附图_javascript技巧

见图:

html5+javascript制作简易画板附图_javascript技巧 

代码如下:

复制代码 代码如下:






简易画板



<script> <br><br>var c;//获取到的2d画板 <BR>var painting = false;//判断是否正在绘画,即鼠标左键是否长按下去 <BR>var canvas;//画板 <BR>$(function(){ <br><br>$(".eraseSeries").hide();//初始状态单选按钮组隐藏 <br><br>canvas=document.getElementById("myCanvas"); <BR>c=canvas.getContext("2d"); <BR>c.lineCap="round";//设置笔迹边角,否则笔迹会出现断层 <BR>c.stroke;//笔迹的颜色 <BR>c.lineWidth=5;//笔迹的粗细 <BR>$("#color").change(function(){//笔迹颜色发生改变时 <BR>if(eraseFlag==true)//处在擦皮状态 <BR>{ <BR>$("#erase").trigger("click");//自动触发橡皮的点击事件,以返回到画笔状态 <BR>} <BR>c.strokeStyle=$(this).val();//设置画笔状态 <BR>c.lineWidth=$(this).val(); <br><br>}); <br><br>$("#fontSize").change(function(){//画笔粗细发生改变 <BR>if(eraseFlag==true)//同上 <BR>{ <BR>$("#erase").trigger("click"); <BR>} <BR>c.lineWidth=$(this).val(); <BR>c.strokeStyle=$("#color").val(); <BR>//eraseFlag=false; <BR>}); <br><br>$(".eraseSeries").click(function(){//橡皮大小发生改变 <BR>var size=$(''input[name="eraseSize"]:checked'').val();//获取到橡皮单选按钮组的选中值 <BR>sizeE=size;//将该值传到全局变量上,sizeE需要用来控制橡皮样式的位置 <BR>c.lineWidth=size; <BR>$("#eraseImg").css({"width" :size+"px","height":size+"px"});//橡皮样式大小发生改变 <BR>}); <br><br>$("#erase").toggle(function(){//橡皮按钮的点击翻转事件 <BR>c.save();//保持上次设置的状态 <BR>eraseFlag=true; <BR>c.stroke; <br><br>$("#erase").text("画笔");//改变按钮上的文字 <BR>$(".eraseSeries").show(''fast'');//橡皮单选组出现 <BR>// $("#eraseImg").show(); <BR>sizeE=5; <br><br><BR>},function(){ <BR>eraseFlag=false; <BR>$("#erase").text("橡皮"); <BR>$(".eraseSeries").hide(''fast''); <BR>c.restore();//恢复上次画笔的状态(包括颜色,粗细等) <BR>}); <br><br><BR>//setInterval(paint,2); <br><br>}); <br><br>var p_x;//上次鼠标位置 <BR>var p_y; <BR>var p_x_now;//当前瞬间鼠标位置 <BR>var p_y_now; <BR>var eraseFlag=false; <BR>var sizeE;//橡皮大小 <br><br>$(document).mousedown(function(e){//鼠标按下触发事件 <br><br><BR>// alert(sizeE); <BR>p_x= e.clientX;//获取位置,并置为上次鼠标位置 <BR>p_y= e.clientY; <BR>painting = true;//画笔启动标志 <br><br>}); <BR>$(document).mousemove(function(e){//鼠标移动触发事件 <BR>if(eraseFlag==true&& e.clientY>30)//橡皮处在激活状态,并且鼠标Y的位置大于30,也即鼠标在画板内 <BR>{ <br><br>//橡皮图像跟随鼠标而动 <BR>$("#eraseImg").animate({left: e.clientX-sizeE+"px",top: e.clientY-sizeE+"px"},0).show(''fast''); <BR>} <BR>else <BR>{ <BR>$("#eraseImg").hide(''fast''); <BR>} <BR>if(painting==true)//处于画笔激活状态 <BR>{ <BR>//alert(1); <BR>p_x_now= e.clientX;//当前瞬间的鼠标位置 <BR>p_y_now= e.clientY; <BR>c.beginPath();//开始路径 <BR>//曲线是由一段段非常小的直线构成,计算机运算速度很快,这是一种以直线迭代画曲线的方式 <BR>c.moveTo(p_x-5-canvas.offsetLeft,p_y-5-canvas.offsetTop);//移动到起始点 <BR>c.lineTo(p_x_now-5-canvas.offsetLeft,p_y_now-5-canvas.offsetTop);//从起始点画直线到终点 <br><br>c.stroke(); <BR>c.closePath();//封闭路径,这个很重要,如果路径不封闭, <BR>// 那么只要canvas颜色发生改变,所有的之前画过的颜色都发生改变 <BR>p_x = p_x_now;//一次迭代后讲当前的瞬间坐标值赋给上次鼠标坐标值 <BR>p_y = p_y_now; <BR>} <br><br>}); <br><br>$(document).mouseup(function(e){//鼠标松开触发事件 <br><br>painting=false;//冻结画笔 <BR>}); <br><br></script>








5
10
15
20
30











Javascript & DHTML上传文件控件_javascript技巧

Javascript & DHTML上传文件控件_javascript技巧

首先来做一个实例,批量上传的ui控件。以后一般做的示例也是以ui控件为主的。都是封装成object或者用function封装成"class"类。

上章基本上把要交代的基本知识都说了一些,今天终于开始写代码了:D
首先来做一个实例,批量上传的ui控件。以后一般做的示例也是以ui控件为主的。都是封装成object或者用function封装成"class"类。

也许对于单单看前几章的朋友来说这个例子过于深奥了,但是不用担心,一步步来解释应该很快理解的,关键是理解怎么做,而不是怎么写。
首先看一个成品截图预览:

一、接下来我们先说思路,首先定义一个upload"类",

一)、这个类的公共访问信息应该有:
1、构造函数中要传递一些必要的参数,比如,在哪个容器构造upload的信息。
2、必须有一个add()方法,用于添加一个upload
3、必须有一个remove()方法,用于删除一个upload

二)、这个类中应该有一些必要的信息,是生成实例本身所具有的信息,(upload对象的一些信息)。
1、得到一共多少个upload信息,
2、一个容器对象,这个对象也是从构造函数中传递。

整个图可以简单的表示为


二、我想我们该想想应该用到哪些知识,哪些是熟悉的,哪些是未知的。

一)、正如我们上面预览图所见到的,需要三个或以上的新控件。(添加,删除,还有一个file控件,也或者还有其它的...但至少眼睛见到的就这么多了),既然是新的信息,就会可能用到document.createElement,要添加进一个容器里就可能用到object.appendChild(obj)或者obj.insertBefore()方法。删除也就是obj.parentNode.removeChild(obj)。这些上一章都已经说过了。

二)、既然是控件,肯定得用function或者是一个对象(object)封装起来,对这部分知识,第一章已经简单的说明了

三)、如何组织呢?在上面的思路中也已经有了文字和图示

接下来就动手写:

一)、构造函数,以及基本的代码(伪代码)

复制代码 代码如下:


<script> <br/>function upload(target/*容器*/ <br/> ) <br/>{ <br/> this._cnt = 0; /*计数器*/ <br/> this.target = document.getElementById(target); <br/>}; <br/><br/>upload.prototype.add = function () { <br/> /* <br/> *生成一个 file <br/> *生成一个 添加 <br/> *生成一个 删除 <br/> *计数器+1 <br/> */ <br/>}; <br/><br/>upload.prototype.remove = function () { <br/> /* <br/> *删除一个 file <br/> *删除一个 添加 <br/> *删除一个 删除 <br/> */ <br/>}; <br/></script> 



二、写出add方法的实现 

复制代码 代码如下:


<script> <br/>upload.prototype.add = function () { <br/> /* <br/> *生成一个 file <br/> */ <br/> var self = this; var cnt = this._cnt; <br/> var cFile = document.createElement("input"); <br/> cFile.type="file"; cFile.name="upload"; <br/> cFile.id = "upload_file_" +cnt; <br/> /* <br/> *生成一个 添加 <br/> */ <br/> var cAdd = document.createElement("span"); <br/> cAdd.innerHTML="添加"; <br/> cAdd.onclick = function () { <br/> self.add(); <br/> }; <br/> /* <br/> *生成一个 删除 <br/> */ <br/> var cRemove = document.createElement("span"); <br/> cRemove.innerHTML="删除"; <br/> cRemove.onclick = function () { <br/> self.remove(cnt); <br/> }; <br/><br/> cAdd.id = "upload_add_" +cnt; <br/> cRemove.id = "upload_remove_" +cnt; <br/><br/> /* 把所有生成的信息添加到容器中 */ <br/> this.target.appendChild(cFile); <br/> this.target.appendChild(cAdd); <br/> this.target.appendChild(cRemove); <br/><br/> /* 计数器+1 */ <br/> this._cnt++; <br/><br/> return this; //返回 <br/>}; <br/></script>


三、写出remove方法的实现

复制代码 代码如下:


<script> <br/>upload.prototype.remove = function (n) { <br/> /* <br/> *删除一个 file <br/> */ <br/> var a = document.getElementById("upload_file_" +n); <br/> a.parentNode.removeChild(a); <br/> /* <br/> *删除一个 添加 <br/> */ <br/> var a = document.getElementById("upload_add_" +n); <br/> a.parentNode.removeChild(a); <br/> /* <br/> *删除一个 删除 <br/> */ <br/> var a = document.getElementById("upload_remove_" +n); <br/> a.parentNode.removeChild(a); <br/><br/> return this; <br/>} <br/></script> 



上面remove方法过于重复,可考虑重新把remove再简化,从而使我们的代码更简短而且易于维护呢?在这里,我们把这个通用功能放到一个函数里,也就是多加一个函数: 

立即学习“Java免费学习笔记(深入)”;


[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]


四、将代码组合一下,基本上可以算是完成了:D 

复制代码 代码如下:


<script> <br/>function upload(target/*容器*/ <br/> ) <br/>{ <br/> this._cnt = 0; /*计数器*/ <br/> this.target = document.getElementById(target); <br/>}; <br/><br/>upload.prototype.add = function () { <br/> /* <br/> *生成一个 file <br/> */ <br/> var self = this; var cnt = this._cnt; <br/> var cFile = document.createElement("input"); <br/> cFile.type="file"; cFile.name="upload"; <br/> cFile.id = "upload_file_" +cnt; <br/> /* <br/> *生成一个 添加 <br/> */ <br/> var cAdd = document.createElement("span"); <br/> cAdd.innerHTML="添加"; <br/> cAdd.onclick = function () { <br/> self.add(); <br/> }; <br/> /* <br/> *生成一个 删除 <br/> */ <br/> var cRemove = document.createElement("span"); <br/> cRemove.innerHTML="删除"; <br/> cRemove.onclick = function () { <br/> self.remove(cnt); <br/> }; <br/><br/> cAdd.id = "upload_add_" +cnt; <br/> cRemove.id = "upload_remove_" +cnt; <br/><br/> /* 把所有生成的信息添加到容器中 */ <br/> this.target.appendChild(cFile); <br/> this.target.appendChild(cAdd); <br/> this.target.appendChild(cRemove); <br/><br/> /* 计数器+1 */ <br/> this._cnt++; <br/><br/> return this; //返回 <br/>}; <br/><br/>upload.prototype._removeNode = function (id) { <br/> var a=document.getElementById(id); <br/> a.parentNode.removeChild(a); <br/>}; <br/><br/>upload.prototype.remove = function (n) { <br/> /* <br/> *删除一个 file <br/> */ <br/> this._removeNode("upload_file_" +n); <br/> /* <br/> *删除一个 添加 <br/> */ <br/> this._removeNode("upload_add_" +n); <br/> /* <br/> *删除一个 删除 <br/> */ <br/> this._removeNode("upload_remove_" +n); <br/><br/> return this; <br/>} <br/></script> 



五、OK,加上相关的html代码就好了: 

复制代码 代码如下:


  

  
<script> <br/>//这里是上面我们写的控件代码,这里由于篇幅,我就不再贴了 <br/></script>  
  
  

  
<script> <br/>var o=new upload("uploadConainer"); <br/>o.add(); <br/></script>  
  
 




六、嗯,已经看到效果了吧,但似乎不太理想,全部添加的都粘在一起了,有必要要美化一下。从何处入手?这里可以有很多选择: 
1、加一个换行符
 
2、每添加一个upload就再加一个容器p 
...等 

我们这里添加一个容器,如果以后还要加什么东西,会更好加一些,修改add: 

复制代码 代码如下:


<script> <br/>upload.prototype.add = function () { <br/> /* <br/> *生成一个 file <br/> */ <br/> var self = this; var cnt = this._cnt; <br/> var cWrap = document.createElement("p"); <br/> cWrap.id = "upload_wrap_" +cnt; <br/> var cFile = document.createElement("input"); <br/> cFile.type="file"; cFile.name="upload"; <br/> cFile.id = "upload_file_" +cnt; <br/> /* <br/> *生成一个 添加 <br/> */ <br/> var cAdd = document.createElement("span"); <br/> cAdd.innerHTML="添加"; <br/> cAdd.onclick = function () { <br/> self.add(); <br/> }; <br/> /* <br/> *生成一个 删除 <br/> */ <br/> var cRemove = document.createElement("span"); <br/> cRemove.innerHTML="删除"; <br/> cRemove.onclick = function () { <br/> self.remove(cnt); <br/> }; <br/><br/> cAdd.id = "upload_add_" +cnt; <br/> cRemove.id = "upload_remove_" +cnt; <br/><br/> /* 把所有生成的信息添加到容器中 */ <br/> cWrap.appendChild(cFile); <br/> cWrap.appendChild(cAdd); <br/> cWrap.appendChild(cRemove); <br/> this.target.appendChild(cWrap); <br/><br/> /* 计数器+1 */ <br/> this._cnt++; <br/><br/> return this; //返回 <br/>}; <br/></script> 




七、加上CSS美化一下,最后的代码如下: 

 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"   
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">   
<html xmlns="http://www.w3.org/1999/xhtml">   
<head>   
<title> upload control - http://www.jb51.net </title>   
<style type="text/css" media="all" title="Default">   
      * { font-family:Arial; }   
      body { font-size:10pt; }   
      h1 { }   
      #footer { font-size:9pt; margin:20px; }   
      span { margin: 3px; text-decoration:underline; cursor:default; }   
</style>   
<script type="text/javascript">   
//<![CDATA[   

    function upload(target) {   
      this._cnt = 0;    
      this.target = document.getElementById(target);   
    };   

    upload.prototype.add = function () {   

      var self = this; var cnt = this._cnt;   
      var cWrap = document.createElement("div");   
      cWrap.id = "upload_wrap_" +cnt;   
      var cFile = document.createElement("input");   
      cFile.type="file"; cFile.name="upload";   
      cFile.id = "upload_file_" +cnt;   

      var cAdd = document.createElement("span");   
      cAdd.innerHTML="添加";   
      cAdd.onclick = function () {   
        self.add();   
      };   

      var cRemove = document.createElement("span");   
      cRemove.innerHTML="删除";   
      cRemove.onclick = function () {   
        self.remove(cnt);   
      };   

      cAdd.id = "upload_add_" +cnt;   
      cRemove.id = "upload_remove_" +cnt;   

      cWrap.appendChild(cFile);   
      cWrap.appendChild(cAdd);   
      cWrap.appendChild(cRemove);   
      this.target.appendChild(cWrap);   
      this._cnt++;   

      return this;   
    };   

    upload.prototype._removeNode = function (id) {   
      var a=document.getElementById(id);   
      a.parentNode.removeChild(a);   
    };   

    upload.prototype.remove = function (n) {   
      this._removeNode("upload_file_" +n);   
      this._removeNode("upload_add_" +n);   
      this._removeNode("upload_remove_" +n);   
      return this;   
    };   

    onload = function () {   
      var o = new upload("container");   
      o.add();   
    };   
//]]>   
</script>   
</head>   
<body id="www.jb51.net">   
    <h1> batch upload control with javascript </h1>   
    <div id="container"></div>   
    <div id="footer">tutorial of DHTML and javascript programming, Power By jb51.net</div>   
</body>   
</html>
登录后复制

javascript html 静态页面传参数_javascript技巧

javascript html 静态页面传参数_javascript技巧

复制代码 代码如下:

<script> <BR>function getParam() <BR>{ <BR>urlInfo=window.location.href; //获取当前页面的url <BR>intLen=urlInfo.length; //获取url的长度 <BR>offset=urlInfo.indexOf("?"); //设置参数字符串开始的位置 <BR>strKeyValue=urlinfo.substr(offset,len); //取出参数字符串 这里会获得类似“id=1”这样的字符串 <BR>arrParam=strKeyValue.split("="); //对获得的参数字符串按照“=”进行分割 <BR>strParamValue=arrParam[1]; //得到参数值 <BR>alert("您要传递的参数值是"+strParamValue); <BR>} <BR></script>

javascript html5 canvas实现可拖动省份的中国地图_javascript技巧

javascript html5 canvas实现可拖动省份的中国地图_javascript技巧

本文实例分享了html5 canvas可拖动省份的中国地图实现方法,供大家参考,具体内容如下

1.数据获取
画地图需要省份边界坐标,理论上可以每次都用百度API获取数据并绘图,但为了增加效率,首先将所有坐标都获取下来并存入数据库中。
新建省份数据数组

复制代码 代码如下:
var allZoneData = [{''name'':''辽宁省'',''been'':''yes'',''id'':''01''},{''name'':''吉林省'',''been'':''yes'',''id'':''02''},……]; 

轮询该数组,根据省份名称请求百度API获取坐标数据,并将数据以ajax方式放松给php
var myGeo = new BMap.Geocoder(); 
 
(function(){ 
 for(var i = 0;i < allZoneData.length;i++){ 
  getAllZone(allZoneData[i].name,allZoneData[i].been,allZoneData[i].id); 
 } 
})(); 
//name为省份名,been表示是否去过,id为唯一标识,cir为省份圈号(有可能一个省份有两部分封闭圆圈构成) 
function getAllZone (name,been,id) { 
 var data,temp; 
         
 var bdary = new BMap.Boundary(); 
 bdary.get(name, function(rs){ 
  var count = rs.boundaries.length;  
  for(var j = 0; j < count; j++){      
   var ply = new BMap.Polygon(rs.boundaries[j], {strokeWeight: 2, strokeColor: "#ff0000"}); 
   data = ply.getPath(); 
   $.ajax({ 
    url: "addData.php", 
    type:"POST", 
    data: {''data'':data,''name'' : name,''cir'':j,''been'':been,''id'':id}, 
    success: function(txt){ 
     console.log(txt); 
    }, 
    error: function(){ 
     alert(''添加数据出错!''); 
    } 
   });   
  }         
 });         
} 
登录后复制

php得到数据后,解析数据并将数据存储到事先建好的数据库中

<&#63;php 
  header("content-type:text/html; charset=utf-8"); 
  $data = $_REQUEST[''data'']; 
  $name = $_REQUEST[''name'']; 
  $cir = $_REQUEST[''cir'']; 
  $been = $_REQUEST[''been'']; 
  $id = $_REQUEST[''id'']; 
 
  $con = mysql_connect("localhost","……","……"); 
  if (!$con){ 
    die(''Could not connect: '' . mysql_error()); 
  } 
  mysql_select_db("……", $con); 
  mysql_set_charset(''utf8'',$con); 
 
  foreach ($data as $temp){ 
    $sql = "insert into place (id,name,lng,lat,cir,been) values (''".$id."'', ''".$name."'', ''".$temp[''lng'']."'',''".$temp[''lat'']."'',''".$cir."'',''".$been."'')"; 
    if (!mysql_query($sql,$con)){ 
      die(''Error: '' . mysql_error()); 
    } 
  } 
 
  mysql_close($con); 
  echo ''Success''; 
&#63;> 
登录后复制

2.画地图(base地图画在mapCanvas层)
轮询省份数组,并以ajax方式请求该省份边界坐标,然后绘图

var drawMap = function (context,data,l,t) { //context为绘制所在的层,l和t为相对位置,data为边界对象数组 
 if(data.been == ''yes''){ 
  context.fill; 
 }else{ 
  context.fill; 
 } 
 context.globalAlpha = 0.8; 
 context.beginPath(); 
 cleft = (data.coordinate[0].lng - temp_left) * bigger + l; //temp_left和temp_top为地图偏移位置. 
 ctop = (temp_top - data.coordinate[0].lat) * bigger + t; //bigger为放大倍数 
 
 context.moveTo(cleft,ctop); 
           
 for(var j = 1;j < data.coordinate.length;j++){ 
  cleft = (data.coordinate[j].lng - temp_left) * bigger + l; 
  ctop = (temp_top - data.coordinate[j].lat) * bigger + t; 
  context.lineTo(cleft,ctop); 
 } 
           
 context.closePath(); 
 context.stroke(); 
 context.fill(); 
} 
登录后复制

3.画移动连线(连线和移动的省份画在moveMapCanvas层)
当在地图上拖动省份时,出现若干条连接移动的省份和原省份的直线

var drawLinkLine = function(data,l,t){ //此处的l和t表示移动的相对位置 
 for(var k = 0;k < data.coordinate.length;k++){ 
  if(k % 60 == 0){ 
   moveMapContext.beginPath(); 
           
   //根据移动距离的不同,设置连线的粗细 
   lineLength = Math.sqrt(l * l + t * t) / 100; 
   lineLength = lineLength >= 4.5 &#63; 4.5 : lineLength; 
   moveMapContext.lineWidth = 5 - lineLength; 
 
   moveMapContext.stroke; 
   cleft = (data.coordinate[k].lng - temp_left) * bigger; 
   ctop = (temp_top - data.coordinate[k].lat) * bigger; 
   moveMapContext.moveTo(cleft,ctop); 
 
   cleft = (data.coordinate[k].lng - temp_left) * bigger + l; 
   ctop = (temp_top - data.coordinate[k].lat) * bigger + t; 
   moveMapContext.lineTo(cleft,ctop); 
   moveMapContext.closePath(); 
   moveMapontext.stroke(); 
  } 
 } 
} 
登录后复制

4.事件
鼠标按下事件:当点击到地图上时,要做的事是,判断点击位置,将位置信息转化成经纬度,再通过百度API根据经纬度获得省份名称。

$(''#eventCanvas'').mousedown(function(ev){ 
 //获取点击canvas的坐标 
 var mouseX, mouseY; 
 if(ev.layerX || ev.layerX==0){ 
  mouseX = ev.layerX; 
  mouseY = ev.layerY; 
 }else if(ev.offsetX || ev.offsetX==0){ 
  mouseX = ev.offsetX; 
  mouseY = ev.offsetY; 
 } 
 
 //保存点击时的原坐标值 
 tempX = mouseX; 
 tempY = mouseY; 
 
 //将坐标转化为经纬度 
 mouseX = mouseX/bigger + temp_left; 
 mouseY = temp_top - mouseY/bigger; 
 
 if(opts.dragAll){ 
  draging = true; 
 }else{ 
  moveMapContext.clearRect(0, 0, 1100, 630); 
  //根据经纬度获得所在地理位置并获取边界坐标再画线 
  myGeo.getLocation(new BMap.Point(mouseX, mouseY), 
   function(result){ 
    tempName = ''''; 
    draging = true; 
    name = result.addressComponents.province; 
    tempName = name; 
    pubFuns.drawMoveLayerLine(0,0);    
  }); 
 } 
}); 
登录后复制

鼠标移动事件:根据点击的省份名,获得数据,并实时重绘移动层的省份

$(''#eventCanvas'').mousemove(function(ev){ 
 var mouseX, mouseY; 
 if(ev.layerX || ev.layerX==0){ 
  mouseX = ev.layerX; 
  mouseY = ev.layerY; 
 }else if(ev.offsetX || ev.offsetX==0){ 
  mouseX = ev.offsetX; 
  mouseY = ev.offsetY; 
 } 
 if(draging){ 
  if(opts.dragAll){ <span>//拖动整个地图,存在问题,地图画的太慢</span> 
   mapContext.clearRect(0, 0, 1100, 630); 
   for(var i = 0;i < allZoneData.length;i++){ 
    for(var j = 0;j < allData[allZoneData[i].name].length;j++){ //allData是第一次读取数据时放到内存里的变量,它包含了所有数据 
     pubFuns.drawMap(mapContext,allData[allZoneData[i].name][j],mouseX - tempX, mouseY - tempY); 
    } 
   } 
   }else{ 
    moveMapContext.clearRect(0, 0, 1100, 630); 
    pubFuns.drawMoveLayerLine(mouseX - tempX, mouseY - tempY); 
   }  
  } 
}); 
登录后复制

鼠标抬起事件:设置dragging为false,clear移动层。

$(''#eventCanvas'').mouseup(function(e){ 
 if(opts.dragAll){  
 }else{ 
  moveMapContext.clearRect(0, 0, 1100, 630); 
 } 
 draging = false; 
}); 
登录后复制

小结:功能、原理都很简单,但能熟悉canvas的一些属性和方法。canvas层是可以重叠到一起的,这样就可以在不同的层画不同的内容,方便维护和管理。

以上就是本文的全部内容,希望对大家的学习有所帮助。

关于将javascript插入javascript html返回怎么把js的值返回给html的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于html5+javascript制作简易画板附图_javascript技巧、Javascript & DHTML上传文件控件_javascript技巧、javascript html 静态页面传参数_javascript技巧、javascript html5 canvas实现可拖动省份的中国地图_javascript技巧的相关知识,请在本站寻找。

本文标签:

上一篇javascript:删除重复的斜杠和尾部斜杠(js去除重复)

下一篇计算百分比Javascript(计算百分比用什么函数)