带前导零的数字在JavaScript中更改

带前导零的数字在JavaScript中更改,javascript,php,html,Javascript,Php,Html,我使用print语句从php调用一个javascript函数来打印html代码,并传入一个整数。但是,在php中传递的值与javascript函数接收的数字不匹配,我不知道为什么 以下是调用javascript函数的php: $upc = $items[$i]->GetUPC(); print "upc: " . $upc . "<br/>"; $delete = "<a href='#' onclick='removeFromCart(". $upc .")' >

我使用print语句从php调用一个javascript函数来打印html代码,并传入一个整数。但是,在php中传递的值与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>";
警报框正在打印号码:1226972549


我可以理解它是否删除了前导的0,但是这个数字完全不同。有人知道为什么会这样吗?

JavaScript认为这是一个八进制值(因为前导零和缺少大于
7
的数字)。八进制
0011110416605
的十进制值为
1226972549
。例如:

> var value = 010; //10 in octal
> console.log(value);
> 8  //is 8 in decimal
请改用字符串:

removeFromCart("0011110416605")

我发现了这个问题,并通过使用parseInt修复了它:

itemID = parseInt('0011110416605',10);

解决方法是创建一个名为“tempcart”的隐藏文本,然后用HTML或PHP对其赋值,它将保持前导零作为文本字符串的完整性。为了确保,如果要通过PHP传递,请将其转换为字符串

HTML:


这只是一个示例编程,您需要将其应用到您的程序中。正如@Vivid之前提到的,由于转换为八进制值(因为前导零和缺少大于7的数字),Javascript无法通过。

您可以使用包含“”引号的调用

比如onchange=“updateLineTotal{$id,{$po101}”


只将它包含在引号中,所以它会将其视为字符串而不是整数

,将引号括起来。<代码> ReaveFoeCART(“0011110416605”)好的,当我尝试这样做时,javascript甚至不再运行。我认为我做得正确:这是我的控制台结果:,这是我的实际代码:''我键入了什么错误吗?你需要使用单引号或转义双引号。如果属性值本身被包围,你不能在
onclick
中使用双引号通过双引号。顺便说一句,使用DOM API或jQuery附加事件会更容易。我刚刚意识到这是因为我不能在它周围使用相同类型的引号,对吗?考虑到我已经在整个标记周围使用单引号,在函数调用周围使用双引号,我如何在没有brea的情况下获得内部值周围的引号king it?好的,我来试试。这是不同的–这将给你数字
11110416605
,而不是字符串
“0011110416605”
removeFromCart("0011110416605")
itemID = parseInt('0011110416605',10);
<input type='hidden' id='tempcart' value='0011110416605'>
$itemID = '0011110416605';
$itemID = strval( $itemID );
echo "<input type='hidden' id='tempcart' value=$itemID >";
function removeFromCart() {
var itemID = document.getElementById('tempcart').value;
alert(itemID);
//do whatever...
}