Предотвращение сбрасывания нулей строк Javascript, содержащих число - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть функция javascript, которая принимает строки различной длины, которые содержат числа, которые могут начинаться или не начинаться с нуля или заканчиваться нулем после десятичной точки.

'01234' заменяется на номер 1234
«123.40» заменяется на номер 123.4

мне нужно сохранить фактическое значение строки

 function muteChannel(channelId) 
 {
     alert("channelId:" + channelId);
     return false;
 }

Ответы [ 3 ]

0 голосов
/ 27 апреля 2018

Звучит так, что channelId - это число, а не строка. Если вы попробуете:

alert("12345.0"); // a string

вы получите 12345.0, тогда как если вы попытаетесь:

alert(12345.0); // a number

удалит завершающий ноль. Если это так, похоже, что channelId не имеет нуля в конце к тому времени, когда вы передаете его этой функции. Если вы уверены, что это значение является строкой в ​​какой-то момент в вашем коде, вы можете найти, где оно конвертируется, и исправить это, но трудно сказать, не зная больше.

Надеюсь, это поможет!

0 голосов
/ 27 апреля 2018

Сначала я передавал свое строковое значение как число. Мой код изначально выглядел так

<p:commandLink 
    id="MuteButton"
    type="button"
    value="Unmute" 
    process="@this"
    update="@form" 
    onclick="muteChannel(#{channel.channelId});"
    rendered="#{channel.muted}" 
    disabled="#{channel.status eq 'Hangup' or 
                channel.status eq 'Holding' or 
                channel.status eq 'Unmuting' or 
                channel.status eq 'Dropping'}"/>


но теперь я помещаю одинарные кавычки вокруг # {channel.channelId}, чтобы они оставались строками

<p:commandLink 
        id="MuteButton"
        type="button"
        value="Unmute" 
        process="@this"
        update="@form" 
        onclick="muteChannel('#{channel.channelId}');"
        rendered="#{channel.muted}" 
        disabled="#{channel.status eq 'Hangup' or 
                    channel.status eq 'Holding' or 
                    channel.status eq 'Unmuting' or 
                    channel.status eq 'Dropping'}"/>
0 голосов
/ 27 апреля 2018

Вы можете использовать toFixed и указать, сколько десятичных разрядов вы хотите сохранить в фрагменте:

var x = 12345.10
var y = 12345.10000
console.log(x.toFixed(2))
console.log(y.toFixed(5))
...