Javascript 通过引用将调用作为调用值传递

Javascript 通过引用将调用作为调用值传递,javascript,html,Javascript,Html,我一直在使用这段代码将ImageId移动到jCrop 但是,\u ImageId变量是通过引用给出的 如何通过值将\u ImageId变量赋予jCrop var _ImageId = 0; $(document).ready( function(){ $('.page .image').attr("id", function(){ _ImageId = $(this).attr("id"); return $(

我一直在使用这段代码将ImageId移动到jCrop

但是,
\u ImageId
变量是通过引用给出的

如何通过值将
\u ImageId
变量赋予jCrop

    var _ImageId = 0;

    $(document).ready(
    function(){    
        $('.page .image').attr("id", function(){  
        _ImageId = $(this).attr("id");
        return $(this).attr("id");
    }).Jcrop({
        ImageId : _ImageId,  // my problem is here , when _ImageId change , all of them will change 
        onSelect: Page_ImageSelected
    });      
}
你的代码有点。。。“奇怪”

也许你应该试试这样:

$(document).ready(function() {
    $('.page .image').each(function() {
        var element = $(this);
        element.Jcrop({
            ImageId : element.attr('id'),
            onSelect: Page_ImageSelected
        });
    });
}​);​
当您使用数字、整数、浮点、字符串、布尔等“简单”类型时,Javascript使用“按值”调用


这里的问题是您的代码。

您已经通过值传递了
\u ImageId
JCrop
方法将接收其
ImageId
属性为
0
(或
attr
回调中指定的值)的对象当
\u ImageId
被更改时,它不会更改。

所有javascript值都是按值传递的,即使它们是对对象的引用。即使我认为您的代码应该可以工作,但它无论如何都不会工作,即使它在var元素=$(这)之前不会运行;因此,可能您的选择器
.page.image
错误。但是如果没有你的html代码,我就说不出来了。它什么时候会改变,你认为是什么改变了它?当然,属性可能会更改,但不会从赋值更改为
\u ImageId