肖然的爱great 2014-11-29 00:39 采纳率: 50%
浏览 1512

javascript 作用域问题

下面的代码为什么不能是图片移动,alert(wg_left)他的值已经变了,为啥图片不动呢,还有就是如果将
var wg_left=$('wg').style.left;放到move函数的上面,为何这个全局变量在move函数中用不呢,但是如果不获取图片的属性值,而是换个变量值,这个全局变量就能用,感到很郁闷?
代码如下:
<br> function $(id)<br> {<br> return document.getElementById(id);<br> }</p> <p>function move(e)<br> { var wg_left=$(&#39;wg&#39;).style.left;<br> wg_left=parseInt(wg_left.substr(wg_left.lenght-2));<br> switch(e.keyCode)<br> {<br> case 37:<br> alert(wg_left);<br> wg_left=wg_left-10+&quot;px&quot;;<br> alert(wg_left);<br> break;<br> }<br> }</p> <p>

  • 写回答

1条回答 默认 最新

  • Go 旅城通票 2014-11-29 06:03
    关注

    你只是改变了变量值,没有重新设置对象的left啊,这个值不是地址引用,是值引用,还学要重设下

    而且substr放你也用的不对,直接parseInt就行,不需要截取了,parseInt会将前面的数字字符串转为数字,碰到第一个非数字的内容之后的全部丢弃。而且需要注意设置left属性值你这个对象定位需要为absolute或者relative,要不设置left无效

    function $(id) { return document.getElementById(id); }
    function move(e) {
      var wg_left=$('wg').style.left; 
      wg_left=parseInt(wg_left);
      switch(e.keyCode) { 
        case 37:  wg_left=wg_left-10+"px";  break;
      } 
      $('wg').style.left=wg_left//要重新设置过
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题