函数写成立即执行函数或放到其他函数内部,就执行失败

本人在做一个导航首页,做搜索时,想用百度搜索智能提示功能,遇到了一个奇怪的问题。代码如下:


<body>

    <input type="text" id="q">

    <ul id="show"></ul>

    <script>

        function solve(data) { //得到百度API返回的数据

            var Show = document.getElementById('show');

            var html = "";


            if (data.s.length) {

                Show.style.display = 'block';

                var len = data.s.length;

                for (var i = 0; i < len; i++) { //逐条显示

                    html += '<li><a target="_blank" href="http://www.baidu.com/s?wd=' + data.s[i] + '">' + data.s[i] + '</a></li>';

                }

                Show.innerHTML = html;

            } else {

                Show.style.display = "none";

            }

        }


        var oQ = document.getElementById('q'),

            Show = document.getElementById('show');


        oQ.onkeyup = function() { //当有键盘事件的时候

            if (this.value != "") {

                var oScript = document.createElement("script"); //创建一个script标签,准备引入资源

                oScript.src = 'http://suggestion.baidu.com/su?wd=' + this.value + '&cb=solve';

                document.body.appendChild(oScript);

            } else {

                Show.style.display = "none";

            }

        }

    </script>

</body>

当前代码可执行,可以运行出正确结果。但是当我将其放到其他函数内部,就执行失败。

代码如下:


<body>

    <input type="text" id="q">

    <ul id="show"></ul>

    <script>

        (function() {

            function solve(data) { //得到百度API返回的数据

                var Show = document.getElementById('show');

                var html = "";


                if (data.s.length) {

                    Show.style.display = 'block';

                    var len = data.s.length;

                    for (var i = 0; i < len; i++) { //逐条显示

                        html += '<li><a target="_blank" href="http://www.baidu.com/s?wd=' + data.s[i] + '">' + data.s[i] + '</a></li>';

                    }

                    Show.innerHTML = html;

                } else {

                    Show.style.display = "none";

                }

            }


有大神知道原因吗?


ABOUTYOU
浏览 366回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript