2012-04-09 95 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>