我在一个神秘的问题上花了几个小时太多时间。我没有通过谷歌找到任何。我想分享一下这个发现。
这是在PC上产生预期结果的代码,但在iPhone上出乎意料:
var input = document.getElementById('input');
var output = document.getElementById('output');
output.innerHTML = parseInt(input.innerHTML);
<div id="input">1233453455</div>
<div id="output"></div>
预期结果:
1233453455
1233453455
iPhone结果:
1233453455
NaN
为什么?
答案 0 :(得分:1)
iPhone在执行javascript代码之前更改innerHTML内容! “长号”被解释为电话号码(在这种情况下不是),并在innerHTML中添加tel
链接。观察alert
窗口显示的内容(在iPhone上执行以下脚本):
var input = document.getElementById('input');
var output = document.getElementById('output');
alert('input content: ' + input.innerHTML)
output.innerHTML = parseInt(input.innerHTML);
<div id="input">1233453455</div>
<div id="output"></div>
所以有“意外结果”的原因。
至于解决方案:在我的情况下,我只是为我的文本切换到另一个容器(我使用了data-
属性):
var input = document.getElementById('input');
var output = document.getElementById('output');
output.innerHTML = parseInt(input.getAttribute('data-test'));
<div id="input" data-test="1233453455">1233453455</div>
<div id="output"></div>
另一个似乎被描述为here(感谢@epascarello for pointing this out)。但这将禁用您网页上的所有电话号码链接...