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

时间:2015-01-29 21:26:02

标签: javascript php pass-by-reference truncation

我试图传递一个字符串' 0541210022-0'通过Javascript方法到弹出窗口。当我在弹出窗口中查看该数字时,它显示为11575826.有人可以帮我确定为什么这个值会发生变化吗?我将添加代码以及屏幕截图。谢谢!

弹出窗口代码。首先是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.接下来,我将向您展示屏幕截图,以帮助想象我所看到的内容。

输出到表格单元格的数字。你可以看到它是054121022-0。

enter image description here

接下来,我将显示在java警报中显示的数字,该数字应该是相同的数字,但它会以某种方式更改。正如您所看到的,数字与应有的数字非常不同。

enter image description here

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

2 个答案:

答案 0 :(得分:4)

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>

答案 1 :(得分:0)

我认为你应该用这种方式添加引号:

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