2013-11-21 65 views
2

我使用打印語句打印出HTML代碼,並使用整數傳遞來自PHP的JavaScript函數。但是,它在php中傳遞的值與javascript函數接收的數字不匹配,我不知道爲什麼。前導零的數字在JavaScript中被更改

這裏是調用javascript函數在PHP:

$upc = $items[$i]->GetUPC(); 
print "upc: " . $upc . "<br/>"; 

$delete = "<a href='#' onclick='removeFromCart(". $upc .")' ><img src='".$redx."' height='17' width='17' /></a>"; 

print語句打印出值:0011110416605

在頁面上,使用查看源代碼,以下是此標籤:

<a href='#' onclick='removeFromCart(0011110416605)' > 

這裏是正在調用的JavaScript函數:

function removeFromCart(itemID){ 
    var option = document.getElementById("select_cart"); 
    var selected = option.options[option.selectedIndex].value; 

    alert(itemID); 

    loadCart(itemID,selected,"","remove"); 
} 

警報框打印出編號:1226972549

如果它去掉前導0的我能理解,但這個數字是完全不同的。有誰知道這可能是爲什麼?

+1

看跌行情。 'removeFromCart(「0011110416605」)' – jszobody

回答

7

JavaScript認爲它是一個八進制值(因爲前導零和缺少大於7的數字)。八進制0011110416605的十進制值是1226972549。例如:

> var value = 010; //10 in octal 
> console.log(value); 
> 8 //is 8 in decimal 

使用字符串,而不是:圍繞

removeFromCart("0011110416605") 
+0

好吧,當我嘗試的時候,javascript甚至不再運行。我認爲我做得正確:這是我的控制檯結果:,這裏是我的實際代碼:''我輸錯了什麼? – Jason247

+0

您需要使用單引號或轉義雙引號。如果屬性值本身被雙引號包圍,則不能在'onclick'中使用雙引號。順便說一下,使用DOM API或jQuery附加事件會更容易一些。 –

+0