【问题标题】:Number with leading zeroes gets changed in JavaScript带有前导零的数字在 JavaScript 中被更改
【发布时间】:2013-11-21 17:48:00
【问题描述】:

我正在使用 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>";

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,但这个数字完全不同。有谁知道为什么会这样?

【问题讨论】:

  • 在其周围加上引号。 removeFromCart("0011110416605")

标签: javascript php html


【解决方案1】:

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

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

改用字符串:

removeFromCart("0011110416605")

【讨论】:

【解决方案2】:

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

HTML:

<input type='hidden' id='tempcart' value='0011110416605'>

PHP:

$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...
}

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

【讨论】:

    【解决方案3】:

    你可以在调用时加上''引号

    点赞 onchange="updateLineTotal{$id,'{$po101}')";

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

    【讨论】:

      【解决方案4】:

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

      itemID = parseInt('0011110416605',10);
      

      【讨论】:

      • 这是不同的——它会给你数字11110416605,而不是字符串"0011110416605"
      猜你喜欢
      • 1970-01-01
      • 2020-08-11
      • 2022-01-10
      • 1970-01-01
      • 2011-03-01
      • 2020-10-28
      • 2021-02-19
      相关资源
      最近更新 更多