2012-04-09 93 views
1

我是一个javascript noob,在制作扫雷时采取了一些措施。我将HTML元素ID字符串传递给一个函数。这些字符串具有格式行连字符列。所以左上角的单元格会是1-1。我的功能是评估这些字符串,就好像它们是表达式一样所以...我该如何防止JavaScript评估函数参数

function notMine(id){ 
alert(id) //If the incoming id=4-4, this pops up 0. I want it to pop up 4-4 

我该如何解决这个问题?

+3

您需要告诉我们'id'的来源。你的功能没有任何错误。 – ThiefMaster 2012-04-09 20:53:42

+1

你不能“修复”;函数参数是表达式,并在函数调用之前进行评估。这就是语言的定义方式。 – Pointy 2012-04-09 20:54:17

+2

如果你传入字符串“4-4”,那就不可能了。 – 2012-04-09 20:54:21

回答

8

表达式在函数调用之前被评估,因为它们不是字符串。使用撇号或引号,使之成为字符串:

notMine("4-4"); 

notMine('4-4'); 
+1

从技术上来说,表达式在函数被调用之前仍然被评估:-) – Pointy 2012-04-09 20:55:03

+0

@Pointy已经通知了并且正在赶路的警务人员警察! ;) – 2012-04-09 20:55:55

+0

我承认,像这样的问题带来了我最糟糕的一面。 – Pointy 2012-04-09 20:57:07

4

当你传递的参数,使用引号:

干杯。

<script type="text/javascript"> 
    feedMe(4 + 4); 
    feedMe("4 + 4"); 

    function feedMe(id) 
    { 
     alert(id); 
    } 
</script>