2011-12-22 23 views
0
function test() { 
    var id = 123; 
    var id12 = 'abcd'; 
    var childDiv = ""; 
    childDiv += '<div style="width:20px;height:20px" onclick="newsClicked('+id12+')">Click</div>'; 

    $("#mydiv").append(childDiv); 

} 

function newsClicked(param) { 
    alert(param); 
} 

上面是测试函数,test()是我在测试div的onClick事件中调用的函数。如果我通过身份证,这是一个数字(整数)它的工作原理,如果我通过 字符串它说参考错误。它与我的猜想有关。如何解决它。 这里发生了什么?将参数传递给javascript函数失败

回答

2

变化:

childDiv += '<div style="width:20px;height:20px" onclick="newsClicked('+id12+')">Click</div>'; 

childDiv += '<div style="width:20px;height:20px" onclick="newsClicked(\''+id12+'\')">Click</div>'; 

当您将追加childDiv一日一整数作为参数传递给div的结果将是:

<div style="width:20px;height:20px" onclick="newsClicked(3)">Click</div> 

这是正确的,在字符串的结果将是:

<div style="width:20px;height:20px" onclick="newsClicked(string_as_arg)">Click</div> 

这是不好的,因为string_as_arg不是最后不在范围内的变量。这就是为什么你应该把它放在撇号中。然后正确的结果将是:

<div style="width:20px;height:20px" onclick="newsClicked('3')">Click</div> 
<div style="width:20px;height:20px" onclick="newsClicked('string_as_arg')">Click</div> 

所以没有真正的整型常量字符串,但的情况下,大的区别,现在被正确识别为字符串不是变量。

+0

谢谢,懂了工作,但我没有得到究竟是什么问题,要作为一个字符串传递参数,我们需要逃避它,为什么呢? – sat 2011-12-22 11:19:08

+0

@sat,检查我的编辑。我已经添加了解释。 – 2011-12-22 11:23:26

+0

@sat你传递这个字符串作为一个字符串,但仅用于连接将在稍后执行的不同代码语句。 – 2011-12-22 11:29:26

1

它,当你传递一个number因为number不需要在quotesstring必须处于quotes工作。所以要通过字符串,你应该使用escape焦炭"\"

类似:

newsClicked(\''+id12+'\') 
1

你的问题,

如何解决它。

*注意:你可以看到像\''+id12+'\'下面的代码

function test() { 
    var id = 123; 
    var id12 = 'abcd'; 
    var childDiv = ""; 
    childDiv += '<div style="width:20px;height:20px" onclick="newsClicked(\''+id12+'\')">Click</div>'; 

    $("#mydiv").append(childDiv); 

} 

function newsClicked(param) { 
    alert(param); 
} 

请告诉我发生的事情居然在这里? DIV后点击它最近被添加到DOM

newsClicked功能将解雇, 它将加入到DOM像

<div onclick="newsClicked(abcd)" style="width: 20px; height: 20px;">Click</div> 

这里,ABCD是使用像变量,但真实并不存在。

,你会得到错误,如

ABCD没有定义

,但如果你把ID变量,它是整数,这将增加对DOM像

<div onclick="newsClicked(123)" style="width: 20px; height:20px;">Click</div> 

这在语法上是完全正确的。

我猜你现在明白了。

干杯,

+0

好吧,所以如果传递了整数,它将作为值,而不是变量,这就是为什么它工作!唷! – sat 2011-12-22 11:28:38