2 xiaorandeai 521 xiaorandeai_521 于 2014.11.29 08:39 提问

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个回答

showbo
showbo   Ds   Rxr 2014.11.29 14: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//要重新设置过
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Javascript 中 作用域、闭包与 this 指针
js 中的作用域,闭包的理解和运用,this 的理解和运用
详解JavaScript作用域
本篇博文花费了近一天的时间,无论你是拥有多年编程经验的JS开发者,还是初学前端的程序员,认真阅读本文,一定有你不知道的JS知识点. 一定会让您对作用域有更深刻的理解。 同样推荐先前所写的几篇关于javascript中This,从不同的角度去理解This.
JavaScript的作用域和变量对象
变量对象先来说说什么是变量对象,变量对象中又存储了什么东西吧。 JavaScript中的执行环境包括全局执行环境和函数执行环境这两种,每进入到一个执行环境都会创建一个变量对象,这个对象中记录了在当前执行环境中可以访问到的变量,它们以变量对象的属性形式存在。也就是说这个变量对象成为“作用域”这个抽象概念的实体。 同时,变量对象中的属性记录是有一定先后顺序的,并且属性值到底是实际的值还是undefi
理解 js的作用域
1.ES5中的作用域for(var i =0;i<10;i++){} console.log(i)js这段代码,你觉得会输出什么?答案是10,熟悉java的同学肯定有点诧异,为什么会这样呢?因为js还是不同与java的,在ES5中,只有全局作用域和函数作用域,并没有块作用域,当然我们可以实现块作用域的功能。看下面代码:(function(){ for(var i =0;i<10;i++){} })(
JavaScript中的作用域问题
JavaScript 词法作用域
javascript理解之变量作用域与闭包
何为闭包闭包是指能够访问自由变量的函数 (变量在本地使用,但在闭包中定义)。换句话说,定义在闭包中的函数可以“记忆”它被创建时候的环境。函数作用域与声明提前var scope= "global scope"; function f(){ console.log(scope); //undefined,并没有出现"global scope" var scope="local scope";
js变量作用域的一些例子
本来想要在“作用域”这个专题上自己总结出一些东西的,结果想了好久都没有形成一个固定的思路,也不想贸然拷贝网上的说法。所以,还是先记录几个容易犯错的小例子,以后再来形成总结吧。1、“变量声明提升”var x = 'global';function f1() { console.log(x); }function f2() { console.log(x); /*
关于js的闭包 匿名函数和作用域的几个小点
今天看到js的闭包那一章,被例子搞的头大:首先是关于闭包中的自由变量:var result=[]; function foo(){ var i= 0; for (;i<3;i=i+1){ result[i]=function(){ alert(i) } } }; foo(); result[0](); // 3 resu
js中var的作用域和输出问题
关于js 中var的问题: 1、var声明的变量是函数作用域; 2、var声明变量会提前到文件最开始的地方,但是初始化还是在语句位置。 示例代码: var a; console.log(a); //undefined a=1; console.log(b); //报错 b is not defined b=2; console.log(c); //undefined
javascript函数作用域和嵌套调用关系
JavaScript 的作用域是通过函数来定义的,在一个函数中定义的变量只对这个函数内部可见,我们称为函数作用域。特别注意:JavaScript 的作用域完全是由函数来决定的, if 、 for 语句中的花括号不是独立的作用域。在函数中引用一个变时,JavaScript 会先搜索当前函数作用域,或者称为“局部作用域”,如果没有找到则搜索其上层作用域,一直到全局作用域。函数作用域的嵌套关系是定义时决定