Uncaught ReferenceError: ···is not defined 这是 JavaScript 参数定义问题。跪求大神!

时间:2022-11-06 15:13:13
Uncaught ReferenceError: ···is not defined 这是 JavaScript 参数定义问题。跪求大神!
$(document).ready(function () {
    $("#btn").click(function () {
        var booksname = document.getElementById("txtBooksName").value;
        $.ajax({
            type: "POST",
            url: "Select.ashx?method=getdata&booksname=" + booksname,
            contentType: "application/json",
            dataType: "json",
            async: true,
            success: function (result) {
                var data = eval(result.BD);
                var rresult = "<table border=1><tr><th>书籍编号</th><th>书名</th><th>目前状态</th><th>操作</th></tr>"
                for (var i = 0; i < data.length; i++) {
                    rresult += "<tr><td id='id" + i + "'>" + data[i].BookId + "</td><td>" + data[i].BooksName + "</td><td>" + data[i].BookState + "</td><td><input id='btn" + i + "' type='button' value='借阅' onclick='change( " + data[i].BookId + "," + data[i].BooksName + ")' /></td></tr>";
                }
                rresult = rresult + "</table>";
                $("#MyDiv").html(rresult)
            },
            failure: function (response) {
                alert(response);
            }
        })
    })
})

//change(" + data[i].BookId + ")
function change(bookid, bookname) {
    alert(bookid);

真心求教!为难了一天了,没搞懂!为什么会出现如图的问题?14行处,onclick 事件 的 change 函数中的俩参数需要在哪里定义呢?为什么 bookid 都可以,唯独bookname 不可以呢?

11 个解决方案

#1


送分题啊,你要在你的三国演义那里用单引号或者双引号包含

#2


就你截图没法看出你的onclick代码是怎么绑定的,你应该要给出aspx页面的代码,而不是生成后的html源代码,反正问题就是你的click第二个参数要加单引号

'三国演义'

这样就行

#3


引用 1 楼 starfd 的回复:
送分题啊,你要在你的三国演义那里用单引号或者双引号包含
咦,你好!我一共两次发帖,上次就是你第一个回复(也是唯一一个回复的),这次又要麻烦你了!你的意思是把 onclick='change( " + data[i].BookId + "," + data[i].BooksName + ")' 的" + data[i].BooksName + "再加个引号引起来么?

#4


rresult += "<tr><td id='id" + i + "'>" + data[i].BookId + "</td><td>" + data[i].BooksName + "</td><td>" + data[i].BookState + "</td><td><input id='btn" + i + "' type='button' value='借阅' onclick='change( " + data[i].BookId + "," +  data[i].BooksName + ")' /></td></tr>";
data[i].BooksName 的值没有被引号括起
假定
data[i].BookId = 100
data[i].BooksName = 三国演义
则变成 onclick='change( 100,三国演义)'
显然是不对的,要 onclick='change( 100,"三国演义")' 这样才行

#5


Uncaught ReferenceError: ···is not defined 这是 JavaScript 参数定义问题。跪求大神!额,加了之后就这样了。。。

#6


引用 2 楼 starfd 的回复:
就你截图没法看出你的onclick代码是怎么绑定的,你应该要给出aspx页面的代码,而不是生成后的html源代码,反正问题就是你的click第二个参数要加单引号

'三国演义'

这样就行
哦哦抱歉,补一下我的 ashx 代码。我用的一般处理程序中 html 表单。
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <script src="JS/jquery-1.10.2.min.js"></script>
    <script src="Select.js"></script>
</head>
<body>
    请输入想查询的书名:<input id="txtBooksName" type="text" style="height:17px;width:99px" />
    <input id="btn" type="button" value="按钮" />
    <div id="MyDiv">
        <p>
            查询结果将显示于此处!
        </p>
    </div>
</body>
  查出结果之后,直接替代掉 MyDiv 中的 <p> 标签

#7


rresult += "<tr><td id='id" + i + "'>" + data[i].BookId + "</td><td>"
 + data[i].BooksName + "</td><td>" + data[i].BookState 
+ "</td><td><input id='btn" + i +
 "' type='button' value='借阅' onclick='change( " 
+ data[i].BookId + ",\"" 
+ data[i].BooksName + "\")' /></td></tr>"

因为你拼接的时候是 用单引号包含的click函数,所以要改用引号包含BooksName ,像上面那样改就可以了
而且建议如果占位数量少的话,用string.Format更直观

#8


引用 4 楼 xuzuning 的回复:
rresult += "<tr><td id='id" + i + "'>" + data[i].BookId + "</td><td>" + data[i].BooksName + "</td><td>" + data[i].BookState + "</td><td><input id='btn" + i + "' type='button' value='借阅' onclick='change( " + data[i].BookId + "," +  data[i].BooksName + ")' /></td></tr>";
data[i].BooksName 的值没有被引号括起
假定
data[i].BookId = 100
data[i].BooksName = 三国演义
则变成 onclick='change( 100,三国演义)'
显然是不对的,要 onclick='change( 100,"三国演义")' 这样才行
恩,因为 table 是在JS里 拼出来的,所以我只能再加单引号,不能用双引号,但是用了单引号也会出问题。。如上楼的截图。麻烦了!

#9


引用 7 楼 starfd 的回复:
rresult += "<tr><td id='id" + i + "'>" + data[i].BookId + "</td><td>"
 + data[i].BooksName + "</td><td>" + data[i].BookState 
+ "</td><td><input id='btn" + i +
 "' type='button' value='借阅' onclick='change( " 
+ data[i].BookId + ",\"" 
+ data[i].BooksName + "\")' /></td></tr>"

因为你拼接的时候是 用单引号包含的click函数,所以要改用引号包含BooksName ,像上面那样改就可以了
而且建议如果占位数量少的话,用string.Format更直观
谢谢谢谢!我忘了还有转移符这么个东西!嘿嘿。新手,刚开始实习,请见谅!

#10


结贴!!!!!

#11


引用 7 楼 starfd 的回复:
rresult += "<tr><td id='id" + i + "'>" + data[i].BookId + "</td><td>"
 + data[i].BooksName + "</td><td>" + data[i].BookState 
+ "</td><td><input id='btn" + i +
 "' type='button' value='借阅' onclick='change( " 
+ data[i].BookId + ",\"" 
+ data[i].BooksName + "\")' /></td></tr>"

因为你拼接的时候是 用单引号包含的click函数,所以要改用引号包含BooksName ,像上面那样改就可以了
而且建议如果占位数量少的话,用string.Format更直观


比如说,我要给书名加个颜色,a 用红色,b 用蓝色,怎么写啊

#1


送分题啊,你要在你的三国演义那里用单引号或者双引号包含

#2


就你截图没法看出你的onclick代码是怎么绑定的,你应该要给出aspx页面的代码,而不是生成后的html源代码,反正问题就是你的click第二个参数要加单引号

'三国演义'

这样就行

#3


引用 1 楼 starfd 的回复:
送分题啊,你要在你的三国演义那里用单引号或者双引号包含
咦,你好!我一共两次发帖,上次就是你第一个回复(也是唯一一个回复的),这次又要麻烦你了!你的意思是把 onclick='change( " + data[i].BookId + "," + data[i].BooksName + ")' 的" + data[i].BooksName + "再加个引号引起来么?

#4


rresult += "<tr><td id='id" + i + "'>" + data[i].BookId + "</td><td>" + data[i].BooksName + "</td><td>" + data[i].BookState + "</td><td><input id='btn" + i + "' type='button' value='借阅' onclick='change( " + data[i].BookId + "," +  data[i].BooksName + ")' /></td></tr>";
data[i].BooksName 的值没有被引号括起
假定
data[i].BookId = 100
data[i].BooksName = 三国演义
则变成 onclick='change( 100,三国演义)'
显然是不对的,要 onclick='change( 100,"三国演义")' 这样才行

#5


Uncaught ReferenceError: ···is not defined 这是 JavaScript 参数定义问题。跪求大神!额,加了之后就这样了。。。

#6


引用 2 楼 starfd 的回复:
就你截图没法看出你的onclick代码是怎么绑定的,你应该要给出aspx页面的代码,而不是生成后的html源代码,反正问题就是你的click第二个参数要加单引号

'三国演义'

这样就行
哦哦抱歉,补一下我的 ashx 代码。我用的一般处理程序中 html 表单。
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <script src="JS/jquery-1.10.2.min.js"></script>
    <script src="Select.js"></script>
</head>
<body>
    请输入想查询的书名:<input id="txtBooksName" type="text" style="height:17px;width:99px" />
    <input id="btn" type="button" value="按钮" />
    <div id="MyDiv">
        <p>
            查询结果将显示于此处!
        </p>
    </div>
</body>
  查出结果之后,直接替代掉 MyDiv 中的 <p> 标签

#7


rresult += "<tr><td id='id" + i + "'>" + data[i].BookId + "</td><td>"
 + data[i].BooksName + "</td><td>" + data[i].BookState 
+ "</td><td><input id='btn" + i +
 "' type='button' value='借阅' onclick='change( " 
+ data[i].BookId + ",\"" 
+ data[i].BooksName + "\")' /></td></tr>"

因为你拼接的时候是 用单引号包含的click函数,所以要改用引号包含BooksName ,像上面那样改就可以了
而且建议如果占位数量少的话,用string.Format更直观

#8


引用 4 楼 xuzuning 的回复:
rresult += "<tr><td id='id" + i + "'>" + data[i].BookId + "</td><td>" + data[i].BooksName + "</td><td>" + data[i].BookState + "</td><td><input id='btn" + i + "' type='button' value='借阅' onclick='change( " + data[i].BookId + "," +  data[i].BooksName + ")' /></td></tr>";
data[i].BooksName 的值没有被引号括起
假定
data[i].BookId = 100
data[i].BooksName = 三国演义
则变成 onclick='change( 100,三国演义)'
显然是不对的,要 onclick='change( 100,"三国演义")' 这样才行
恩,因为 table 是在JS里 拼出来的,所以我只能再加单引号,不能用双引号,但是用了单引号也会出问题。。如上楼的截图。麻烦了!

#9


引用 7 楼 starfd 的回复:
rresult += "<tr><td id='id" + i + "'>" + data[i].BookId + "</td><td>"
 + data[i].BooksName + "</td><td>" + data[i].BookState 
+ "</td><td><input id='btn" + i +
 "' type='button' value='借阅' onclick='change( " 
+ data[i].BookId + ",\"" 
+ data[i].BooksName + "\")' /></td></tr>"

因为你拼接的时候是 用单引号包含的click函数,所以要改用引号包含BooksName ,像上面那样改就可以了
而且建议如果占位数量少的话,用string.Format更直观
谢谢谢谢!我忘了还有转移符这么个东西!嘿嘿。新手,刚开始实习,请见谅!

#10


结贴!!!!!

#11


引用 7 楼 starfd 的回复:
rresult += "<tr><td id='id" + i + "'>" + data[i].BookId + "</td><td>"
 + data[i].BooksName + "</td><td>" + data[i].BookState 
+ "</td><td><input id='btn" + i +
 "' type='button' value='借阅' onclick='change( " 
+ data[i].BookId + ",\"" 
+ data[i].BooksName + "\")' /></td></tr>"

因为你拼接的时候是 用单引号包含的click函数,所以要改用引号包含BooksName ,像上面那样改就可以了
而且建议如果占位数量少的话,用string.Format更直观


比如说,我要给书名加个颜色,a 用红色,b 用蓝色,怎么写啊