window[$this.attr('onajax')]看到这么一句话,总感觉是错的,经过测试压根就获取不到值,但改成window.$this.attr('onajax')就可以。其中$this=$(this),onajax是一个标签属性的值。

解决方案 »

  1.   

    $this.attr('onajax') 你先看一下这玩意有东西没 , window[$this.attr('onajax')] 这种写法是js对象的一种用法,例如 a={b:'1'} ; 有两种取值方式 a['b'] 或者a.b;而你写的第二种格式有可以能会变成先获取window.$this 然后在获取(window.$this ).attr('onajax');如果你要的结果就是他的话,第一个也应该写成 window[$this] .attr('onajax');但是如果不是那么有可能是$this.attr('onajax')这个没取到你要的值,所以相当于是window[undefind] 所以取不到值;
      

  2.   

    jQuery返回属性值的语法:$(selector).attr(attribute),好像语法不太对吧,w3school的JS window方面的教程也没有提及“[]”的写法,都是一个“.”的写法。我也是初学者,我的理解是,还是按教程教的方法去写吧,或许能得到你需要的东西
      

  3.   

    要分开看。先看$this.attr('onajax')的返回值是什么,比如返回值是:"abc"。
    window[$this.attr('onajax')]
    等于
    window["abc"]
    等于
    window.abc
    等于
    abc也就是访问全局变量abc的值,(前提是页面上有全局变量abc)
      

  4.   

    引用这位师兄的解释下你第二次写的方式有可能就变成了 
    abc.attr('onajax'),简而言之就是第一种方式你先获取的$this对象中属性名叫onajax的值作为window对象的key,从而获取这个对应key的值;
    而第二种方式则是在获取$this对象中属性名叫onajax的值,获取的东西不一样,所以你答案会不一样,现在关键是看两个地方,第一个$this.attr('onajax')看这个有没有值,第二个看window也就全局对象中有没有存$this.attr('onajax')和他相等的key名字,当然还有个隐藏的条件,a[b]的写法是错误的,这里的key必须有引号,没有引号他要报错,应该写成a['b']或者a["b"]或者a.b
      

  5.   

    这里可以把js的对象看做一个特殊的数组,或者你可以把js的数组看做一个特殊的对象都可以,只是便于理解,你尝试在控制台打印数组,比如举个例子:
    var arr = [1,2,3];控制台打印出来是
    0:1
    1:2
    2:3
    而对象假如是
    var obj={'a':'1','b':2,'c':3}
    打印出来是
    a:1
    b:2
    c:3
    你把a,b,c换成0,1,2 就明白了三,其实js的数组就是一个类似json对象的东西,只是他的key已经内定好了,你无法改变,并且也不需要并且也不能在定义时写出来