Передача неверного значения в функцию Javascript

0

Я пытаюсь передать строку "0541210022-0" во всплывающее окно с помощью Javascript-метода. Когда я просматриваю номер в моем всплывающем окне, он отображается как 11575826. Может кто-то, пожалуйста, помогите мне определить, почему это значение меняется? Я добавлю код, а также скриншоты. Спасибо!

Код для всплывающего окна. Сначала HTML/PHP Button, затем 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.

Изображение 174551

Затем я покажу количество, отображаемое в сообщении java, которое должно быть одного и того же номера, но оно каким-то образом изменяется. Как видите, число сильно отличается от того, что должно быть.

Изображение 174551

Спасибо вам за помощь! Я очень смущен, почему это происходит. Я боюсь, что как-то значение усекается, но я не знаю, как передать значение функции Javascript в виде строки.

  • 0
    Так как он используется js как функция, вы не должны использовать Number как переменную в вашем js. Что именно вы думаете, if ( true ) и if(false) будет делать? true всегда true и false всегда false, поэтому первый if всегда будет выполняться, а второй никогда не будет выполняться. Вам нужно сесть, добавить несколько операторов console.log("msg") и отследить, что делает ваш код. Если у вас нет четкого заявления о том, с чем вы собираетесь сравнивать, сделайте это в первую очередь.
  • 0
    Эти ложные имена переменных приведены только для примера? Вы должны избегать именования переменной «Number», учитывая, что это функция. Кроме того, для чего нужны эти истинные / ложные несуществующие сравнения? Теперь я вижу, что повторяю уже сказанное. Вы должны опубликовать некоторые html таблицы для дальнейшего использования, что может показать нам, что #draggable элемент #draggable и откуда вы предположительно берете число.
Теги:
pass-by-reference
truncation

2 ответа

0
Лучший ответ

Я думаю, вы должны добавить цитаты следующим образом:

<button onClick="openPopup(<?php echo $idt; ?>, '<?php echo $Number; ?>');"><?php echo $idt; ?></button>
  • 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>
  • 0
    Спасибо вам за разъяснение!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню