js 怎么传值

JavaScript060

js 怎么传值,第1张

var result = null// 外部定义获取的值

$("a[rel=example_group4]").fancybox({

    'transitionIn': 'none',

    'transitionOut': 'none',

    'titlePosition': 'over',

    'titleFormat': function(title, currentArray, currentIndex, currentOpts) {

        return '<span id="fancybox-title-over"> '

                + result 

                + (currentIndex + 1) 

                + ' / '     

                + currentArray.length 

                + (title.length ? '   ' + title : '') 

                + '</span>'

    }

})

当我们在使用JS进行赋值时,进行简单类型的赋值,只会改变变量的值,而不会改变变量的地址,例如:

此时改变b的值,a的值是不会收到影响的。

而当我们进行复杂类型赋值时,例如:

此时我们b中的name值改变了,与此同时a中的name值也将变成b,大多数情况下我们都不希望这种情况发生,那么该怎么处理?

(ps:简单数据类型一般包括number,string,boolean,其他数据类型一般都为复杂数据类型)

处理这个问题涉及到JS中的深拷贝,JS的深拷贝会为新的变量重新申请一个新的地址块,不会指向原变量的地址,如何实现深拷贝,以下提供了两种方法。

将a进行序列化之后赋值给b,这种方法虽然简单,但是有一定的缺陷,如果a对象中有函数,数组等复杂数据类型,在序列化之后将会丢失这些复杂数据类型,导致赋值不完全。

有一个办法很方便

a.js文件改成其他服务器端脚本,但输出是js语法格式

比如把a.js改成a.php文件

代码示例如下:

<?php $id = $_GET['id'] echo ' function tan(){ alert("' . $id . '") } '这个文件会获取提供的id的值,然后生成一个js函数方法

调用的时候:

<script type="text/javascript" src="a.php?id=20"></script><button onclick="tan()">Click</button>

上面是js引入这个php文件,并提供一个参数id,值是20

然后加了一个按钮触发点击事件调用a.php生成的js函数方法,结果是会弹出20的提示警告框

效果如下图:

满意请采纳。