onClick <a href导致未捕获的ReferenceError:$未定义?

hlh*_*406 2 javascript jquery

我已经通过网站上的许多问题来解决同样的事情,但我做不到

我在代码中的onClick事件中在控制台窗口中收到以下错误:

1未捕获的ReferenceError:未定义SetName

从这一行:

$("#lstResults").append("<li><a href='#' onClick='SetName()'>" + data.d[i].title + "</" + " a>" + "</" + "li>");
Run Code Online (Sandbox Code Playgroud)

我已经通过Uncaught ReferenceError工作:$未定义?试图找到问题和其他几个没有运气的人.

我试过了:

  1. 确保我的CSS高于我的.js文件.
  2. 确保我引用jquery
  3. 确保在jquery之后列出我的其他.js文件
  4. 将对jquery的引用更改为http或https或将其剥离并将其保留为//代码.
  5. 确保我的两个函数都在$(function(){中
  6. 移动我试图用onClick调用的函数超出了我所在的函数.

我真的被卡住了,所以任何帮助都会受到赞赏!

码:

<head runat="server">
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title></title>
    <link href="CSS/jquery-ui-1.12.1.css" rel="stylesheet" />
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <link href="CSS/basics.css" rel="stylesheet" />
    <link href="CSS/fonts.css" rel="stylesheet" />
    <script src="//code.jquery.com/jquery-1.12.4.js"></script>
    <script src="//code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>


    <script>
        $(function () { // this will be called when the DOM is ready

            function SetName() {

                alert("I hit this!");
            }


            function findAll(str) {

                if (str.length > 2) {

                    var param = { "searchString": str };
                    console.log(str.length);
                    console.log(param);
                    $.ajax({

                        type: 'POST',
                        url: 'adminRightsWebForm.aspx/SearchAppJ',
                        data: JSON.stringify(param),
                        contentType: 'application/json; charset=utf-8',
                        dataType: 'json',
                        async: false,
                        success: function (data) {
                            $("#lstResults").empty();
                            for (i = 0; i < data.d.length; i++) {
                                alert(data.d[i].title);
                                $("#lstResults").append("<li><a href='#' onClick='SetName()'>" + data.d[i].title + "</" + " a>" + "</"
+ "li>");
                            }

                            if (data.d.length == 0)
                                $("#lstResults").empty();
                        },
                        error: function (request, status, error) {
                            alert(request.responseText);
                        }
                    });
                }
                else
                    $("#lstResults").empty();
            }
        });
    </script> </head>
Run Code Online (Sandbox Code Playgroud)

das*_*ako 7

这实际上是一个范围问题.

SetName()函数在$(function(){/* ... */})匿名函数内定义,但在窗口级别无法访问,onClick隐式引用.

将函数移到jQuery之上应该解决这个问题.