将不正确的值传递给 Javascript 函数

Passing Incorrect Value to Javascript Function

我正在尝试通过 Javascript 方法将字符串“0541210022-0”传递给弹出窗口 window。当我在弹出窗口 window 中查看数字时,它显示为 11575826。有人可以帮我确定为什么这个值会改变吗?我将添加代码和屏幕截图。谢谢!

弹出代码 window。首先是 HTML/PHP 按钮,然后是 javascript.

HTML/PHP

<?php
    $Number = $row['N1']."-".$row['N2'];
?>
 <button onClick="openPopup(<?php echo $idt;?>, <?php echo $Number;?>);"><?php echo $idt;?></button>

Javascript

function openPopup(id, Number) {
    alert(Number);
    document.getElementById('draggable').style.display = 'block';
    if ( true ) console.log( "This element is draggable!" );
    if ( false ) console.log( "This element failed at being draggable!" );
    document.getElementById('popupID').innerHTML = id;
    document.getElementById('popupNumber').innerHTML = Number;
}

此时数字 = 11575826。接下来我将向您展示屏幕截图以帮助形象化我所看到的内容。

数字正在输出到 table 单元格。如您所见,它是 054121022-0。

接下来,我将显示 java 警报中显示的数字,它应该是相同的数字,但它以某种方式发生了变化。如您所见,该数字与应有的数字有很大不同。

感谢您的帮助!我很困惑为什么会这样。我担心值会以某种方式被截断,但我不知道如何将值作为字符串传递给 Javascript 函数。

我认为你应该这样添加引号:

<button onClick="openPopup(<?php echo $idt; ?>, '<?php echo $Number; ?>');"><?php echo $idt; ?></button>

11575826(十进制)与 054121002(八进制)相同,并且 Javascript(像大多数 C-ish 语言一样)将前导零的数字视为八进制。不确定为什么最后 2 个被截断,或者这是一个错字,但你正在调用

openPopup(WhateverIdtIs, 054121002-0);

相同
openPopup(WhateverIdtIs, 11575826-0);

您需要用引号将字符串保持为字符串:

<button onClick="openPopup('<?php echo $idt;?>', '<?php echo $Number;?>');"><?php echo $idt;?></button>