xfei6868
xfei6868
2010-04-02 09:20

jquery 中 $(document).ready 中function 能否传值

已采纳
首先,说明一下,$(document).ready 中使用传值的function是没有问题的,但是这样做出了一个奇怪的问题,所以在这里贴出来,请高手解决一下。

为了能传入系统的路径,所以在我的exportTemplate.js 文件中定义了,一个总的方法是readyInit.然后我在自己的jsp文件中调用该方法如下:

[code="javascript"]

    <script type="text/javascript">
        $(document).ready(readyInit("<%=path %>"));     
    </script>

[/code]

这样就看似乎传的值 用alert也能打印,但是问题是在exportTemplate.js 有这样
var select2 = document.getElementById("select2");
通过document.getElementById()方法得到的值都是null。

不知道为何,于是自己修改为不传值的形式:
[code="javascript"]

    <script type="text/javascript">
        $(document).ready(readyInit);       
    </script>

[/code]

这样使用的话就没有这个问题了 document.getElementById()方法得到的值 都是正常的了。
但是感觉自己传值的问题还是没有解决,于是想请教!

另外奇怪的是,就算是不传值,自己如果写成:
[code="javascript"]

    <script type="text/javascript">
        $(document).ready(readyInit());     
    </script>

[/code]

就只是在方法的调用中写了一个()结果是:

通过document.getElementById()方法得到的还都是null。

不理解JavaScript关于这方面的机制,忘解答。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • iteye_1059 iteye_1059 11年前

    详见jquery文档关于ready的说明:
    ready方法接收的参数是[color=red]一个函数的引用[/color]
    readyInit()是函数的调用,不是函数的引用

    点赞 评论 复制链接分享
  • iteye_1059 iteye_1059 11年前

    既然只一个函数的引用作为参数,就无法传参了。
    把参数放在外部变量中

    点赞 评论 复制链接分享
  • iteye_1059 iteye_1059 11年前

    假设函数readyInit执行体需要变量path
    [code="java"]

    var path="<%=path %>"; $(document).ready(readyInit);

    [/code]

    点赞 评论 复制链接分享
  • shuokai shuokai 11年前

    var select2 = document.getElementById("select2");

    麻烦你看下最基本的JS

    JS执行是从上到下的,
    $(document).ready(readyInit());

    JQUERY的写法是页面刷新后执行。

    而你的JS本身取得就是错的

    连ID都取不到还怎么取值?

    var select2 = document.getElementById("select2");

    这样执行才没有问题。

    如果你用了JQUERY 为什么不用 $("#select2")?

    点赞 评论 复制链接分享

相关推荐