【问题标题】:Javascript throws typeerror on ios onlyJavascript 仅在 ios 上引发类型错误
【发布时间】:2015-05-02 00:07:48
【问题描述】:

我有一个奇怪的问题,我敢打赌这只是某个地方的一个非常愚蠢的错误,但我就是想不通,我的代码出了什么问题..

我有一个网站,可以在每个常见操作系统上的每个(常见)浏览器上完美运行。 在此页面上,我有一个搜索栏,它在计算机上也可以正常工作。此栏还有一个 jquery keyup 事件,用于开始搜索。 此事件不会在 ios 上触发(第一个问题)。所以我添加了一个按钮作为解决方法。但这也不适用于ios。 如果它可以正常工作,它应该调用一个 JS 方法,该方法只将用户重定向到 search.php 页面,同时附加一个 GET 变量调用查询。我在电脑上加载了页面,错误控制台显示:

TypeError: is not a function (evalating 'search()')

它似乎没有加载这个方法。不管什么原因。所有其他 JS 方法都可以正常工作。只是这个拒绝工作。

搜索栏:

<input placeholder="Search" id="searchbar">

链接如下:

<a href="#" id="searchbutton" onclick="search();">start search</a>

JS 方法如下所示:

var text = document.getElementById('searchbar').value;
window.location.href="./search.php?q="+text;

有什么想法吗?

【问题讨论】:

    标签: javascript php ios dom


    【解决方案1】:

    似乎全局变量 search 被 iOS 保留。尝试使用其他名称,例如mySearch,然后就可以了。

    顺便说一句,您可以考虑使用命名空间或范围以避免与库或系统冲突。

    示例:

    (function() {
        function search() {
           alert('test');
        }
        document.getElementById('searchbutton').onclick = search;
    })();
    

    或者如果你坚持直接在元素中使用onclick

    <a href="#" id="searchbutton" onclick="MyNamespace.search();">start search</a>
    
    <script>
    var MyNamespace = (function() {
        function search() {
           alert('test');
        }
        return {
            search: search
        };
    })();
    </script>
    

    【讨论】:

    • 我试过了,它解决了我的部分问题,但我自己找到了解决方案。谢谢你的提示!这帮助我解决了问题!问题只是一个名字。移动搜索栏与桌面搜索栏的ID相同(实际上我将桌面搜索的innerHTML复制到了移动div中)。之后通过清除桌面搜索,问题就消失了。这样一个简单(合乎逻辑的)错误让我耽搁了好几个小时。这有点尴尬。
    猜你喜欢
    • 2022-01-14
    • 2015-06-16
    • 2015-11-17
    • 1970-01-01
    • 2021-03-12
    • 2017-11-15
    • 2020-08-19
    • 2017-10-26
    • 2016-10-02
    相关资源
    最近更新 更多