带有参数的事件调用函数 - 使用错误参数执行的函数
event calls function with parameter - function executed with wrong parameter
我有一张地图和一个参考 table。在 table 中是其多边形显示在地图上的社区。当我将鼠标悬停在 table 中的某个元素上时,地图上的引用多边形将突出显示。当触发事件 onmouseover 时,将调用一个函数。
在下面的示例中,我有一个 table 行,其中包含事件 onmouseover 和 onmouseout。在这两个事件中,函数 "hoverMunicipality" 将被调用,带有给定的 id (0732130000000) 和一个 truthy/falsy 标志。函数被调用了,但是我在调试器中找到的参数是7941914624,谁能解开我的脑筋?
function hoverMunicipality(municipalityId, switchparam) {
console.log(municipalityId, switchparam);
if (switchparam == true) {
let p = data.features.find(e=> e.properties.RS === municipalityId);
}
if (switchparam == false) {
let p = data.features.find(e=> e.properties.RS === municipalityId);
}
}
<table>
<tr onmouseover="hoverMunicipality(073130000000, true)"
onmouseout="hoverMunicipality(073130000000, false)"><td>Gondor</td></tr>
</table>
那个数字是八进制表示法。将该数字作为字符串传递,它应该按您想要的方式工作。
添加撇号:'073130000000'
<tr onmouseover="hoverMunicipality('07313000000', true)" onmouseout="hoverMunicipality('073130000000', false)"<td>Gondor</td></tr>
因为您传递的值不在引号中,所以它们被视为数字。但是,因为这些数字以零开头,系统将它们视为八进制(以 8 为底)数字,因此您看不到您期望的以 10 为底的表示形式。
您可以只将数字视为字符串并继续使用字符串,或者您可以从字符串开始并转换为数字。
要使用数字,将数字作为字符串进行 pss,然后使用 parseInt()
从这些字符串中解析以 10 为底的数字,确保传递第二个可选参数(基数)以指定以 10 为底的转换.这将导致您丢失初始值中的前导零:
function hoverMunicipality(municipalityId, switchparam) {
// To convert the string to a base 10 number:
console.log(parseInt(municipalityId,10));
// Or just proceed with the data as a string:
console.log(municipalityId);
// Other code here
}
<table>
<tr onmouseover="hoverMunicipality('073130000000', true)"
onmouseout="hoverMunicipality('073130000000', false)"><td>Gondor</td></tr>
</table>
我有一张地图和一个参考 table。在 table 中是其多边形显示在地图上的社区。当我将鼠标悬停在 table 中的某个元素上时,地图上的引用多边形将突出显示。当触发事件 onmouseover 时,将调用一个函数。
在下面的示例中,我有一个 table 行,其中包含事件 onmouseover 和 onmouseout。在这两个事件中,函数 "hoverMunicipality" 将被调用,带有给定的 id (0732130000000) 和一个 truthy/falsy 标志。函数被调用了,但是我在调试器中找到的参数是7941914624,谁能解开我的脑筋?
function hoverMunicipality(municipalityId, switchparam) {
console.log(municipalityId, switchparam);
if (switchparam == true) {
let p = data.features.find(e=> e.properties.RS === municipalityId);
}
if (switchparam == false) {
let p = data.features.find(e=> e.properties.RS === municipalityId);
}
}
<table>
<tr onmouseover="hoverMunicipality(073130000000, true)"
onmouseout="hoverMunicipality(073130000000, false)"><td>Gondor</td></tr>
</table>
那个数字是八进制表示法。将该数字作为字符串传递,它应该按您想要的方式工作。
添加撇号:'073130000000'
<tr onmouseover="hoverMunicipality('07313000000', true)" onmouseout="hoverMunicipality('073130000000', false)"<td>Gondor</td></tr>
因为您传递的值不在引号中,所以它们被视为数字。但是,因为这些数字以零开头,系统将它们视为八进制(以 8 为底)数字,因此您看不到您期望的以 10 为底的表示形式。
您可以只将数字视为字符串并继续使用字符串,或者您可以从字符串开始并转换为数字。
要使用数字,将数字作为字符串进行 pss,然后使用 parseInt()
从这些字符串中解析以 10 为底的数字,确保传递第二个可选参数(基数)以指定以 10 为底的转换.这将导致您丢失初始值中的前导零:
function hoverMunicipality(municipalityId, switchparam) {
// To convert the string to a base 10 number:
console.log(parseInt(municipalityId,10));
// Or just proceed with the data as a string:
console.log(municipalityId);
// Other code here
}
<table>
<tr onmouseover="hoverMunicipality('073130000000', true)"
onmouseout="hoverMunicipality('073130000000', false)"><td>Gondor</td></tr>
</table>