Html十六进制函数参数意外转换为十进制。

时间:2017-04-29 02:13:58

标签: javascript html onclick hex

我从html onclick监听器调用此函数,其参数是表示地址的十六进制数,但输出是十进制形式的相同数字。我尝试转换回来,但它将十六进制数字四舍五入。为什么函数调用首先转换十六进制数?

flexcard += '<button class="mod marg" onclick="App.fundProject('+thisProjectAddress+')">Fund project</button>';

1 个答案:

答案 0 :(得分:1)

如果您的代码中没有引号定义thisProjectAddress,则它被解释为十六进制数而不是字符串,因此通常将表示为十进制数字。例如:

console.log(0x100) // => 256
console.log("0x100") // => 0x100

此外,即使它被存储为字符串,您也会将其作为flexcard的参数写入App.fundProject而不带引号。这意味着flexcard的这一点可能如下所示:

<button class="mod marg" onclick="App.fundProject(0x100)">Fund project</button>

因为,与第一个例子一样,十六进制数是在没有字符串的情况下传递的,它被解释为一个数字,函数将适当地处理它。无论输出App.fundProject涉及其参数,其处理方式与您通过256而不是0x100的方式相同。如果您希望将其保留为十六进制表示形式,请将其作为字符串而不是数字传递:

flexcard += '<button class="mod marg" onclick="App.fundProject(\''+thisProjectAddress+'\')">Fund project</button>';

这将产生此输出:

<button class="mod marg" onclick="App.fundProject('0x100')">Fund project</button>