如何在 JavaScript 中抑制前导 0 以生成格式正确的 URL?(所有尝试都生成了 typedef 错误)

how to suppress leading 0 in javascript to generate properly formatted url? (all attempts have generated typedef errors)

本文关键字:URL 错误 typedef JavaScript 格式      更新时间:2023-09-26

我正在形成一个URL,该URL不能在填充距离的dist GET参数中使用前导零[i]。

trr2.innerHTML= "<b><a href='join.php?id="+idO[i]+"&dist="+distance[i] +"&category="+category[i]+"&min="+min[i]+"&max="+max[i]+"'>Join this deal</a>";

在此生成的链接打印距离 [i] 时,前导为 0,然后在数字小于零时打印小数点,例如"...&dist=0.6..." 这反过来又会导致我使用此表达式生成的 postgresql 调用出错。我尝试了以下所有方法,要么从数字中删除前导 0,要么将数字显式转换为数字,希望这会抑制前导零:

    var dis = distance[i]
...following by any of these....
    var disNN = dis.replace("0", ""); //there will only be 0's in the lead, I know all submitted values, so this expression won't cause other problems
    var disNN = dis.replace(/^0+/, '');
    var disNN = number(dis)

当包含在我的代码中时,其中任何一个都会生成以下错误:

Uncaught TypeError: undefined is not a function

这似乎应该很简单....如何摆脱 0 到 1 之间的值的前导零?

此外,数组是从 php 生成的,调用如下:

var distance = <?php echo json_encode($distance);?>;

万一相关。感谢您的任何建议。

窍在于您看到的消息

Uncaught TypeError: undefined is not a function

我不太确定距离[i]是如何实例化的;但我的猜测是它是一个整数,而不是一个字符串,所以它没有任何内置的字符串函数(如.replace)。

你可以试试这个:

var dis = distance[i].toString();

请注意确保距离[i]不为空,否则'toString失败,你又回到了sqaure。

我会使用 php 函数 ltrim 删除前导零,并将格式良好的距离传递给生成 url 的 JavaScript。

用法:

$str = ltrim($str, '0');// Remove leading 0's
echo ltrim(00000.1, '0');// echoes .1