用javascript构建带有输入复选框的html输出
Building html output with a input checkbox with javascript
我正在构建一个字符串,将被放置在一个div编程。我试图调用输入复选框的onclick
属性,遇到了一点麻烦。我试图通过一个唯一的值id与每个复选框单击。下面的代码就是我所使用的。查看下面的问题:
var count = 1;
$.each(JSON.parse(data.d), function (k, v) {
var searchName = v.searchName;
resultString += "<div class='row form-group'>";
resultString += "<div class='col-sm-1 right-content'><input type='checkbox' onclick = 'authorCheckboxclick(this)' id='" + searchName + "'></div>";
resultString += "<div class='col-sm-11'>";
resultString += "<span>";
//resultString += v.text
resultString += count + ". " + v.text
resultString += "</span>";
resultString += "<br />";
resultString += "<span>";
//resultString += "Consectetur adipisicing, Consequatur, 2015.";
resultString += "</span>";
resultString += "</div>";
resultString += "</div>";
//resultString += "<br><br>";
count++;
});
在authorCheckboxclick
函数中,如果我输入var answerid = $(this).attr('id');
,我就没有定义。
function authorCheckboxclick(elem) {
var answerid = $(this).attr('id');
alert(answerid); //I get undefined
var answerid = $(this).attr(elem.id);
alert(answerid); //I get undefined
var answerid = $(this).attr(elem.id);
alert(answerid); //I get undefined
var searchTerm = elem.id;
alert(searchTerm); //I get proper value
searchTerm = searchTerm.substring(0, 3);
alert(searchTerm); //I get proper value
var answerid = $(this).attr(elem.id);
alert(answerid); //I get undefined
var search = searchTerm.toUpperCase();
var array = jQuery.grep(dataMembers, function (value) {
return value.toUpperCase().indexOf(search) >= 0;
});
是否有一个原因我的jQuery调用不工作,我的JavaScript是?是否有将id值发送到连接的最佳实践?我把苹果和橘子混在一起了吗?哪一种方法比较快?
您的问题的直接解决方案是您在函数中使用this
关键字。当您从on*
属性调用函数时,函数的作用域将是window
,而不是引发事件的元素。要解决这个问题,只需使用参数中提供的元素,即。$(elem)
代替$(this)
一个更好的解决方案完全是使用一个不引人注目的委托事件处理程序,它可以利用this
关键字,因为你试图。它还具有留下更干净的HTML代码和更好地分离关注点的好处。试试这个:
var count = 1;
$.each(JSON.parse(data.d), function(k, v) {
var searchName = v.searchName;
resultString += '<div class="row form-group">' +
'<div class="col-sm-1 right-content"><input type="checkbox" id="' + searchName + '"></div>' +
'<div class="col-sm-11">' +
'<span>' + count + ". " + v.text + '</span><br />' +
'<span></span>' +
'</div>' +
'</div>';
count++;
});
$(document).on('change', '.row :checkbox', function() {
var answerid = this.id;
var search = searchTerm.toUpperCase();
var array = jQuery.grep(dataMembers, function(value) {
return value.toUpperCase().indexOf(search) >= 0;
});
});
相关文章:
- javascript从选中的复选框中检索输入值,并在同一网页中显示多个html文件
- 如何将复选框值从 HTML 发送到 Node JS
- 使用 html 中的复选框切换表格上的颜色
- 多个复选框,如果正确,则更改背景图像(HTML/Javascript)
- 如果在 HTML/JavaScript 中选中了复选框,则填充单选按钮
- 根据签入的表单,在html电子邮件模板中将复选框标记为true
- 选中一个复选框后,使用html.checkbox自动禁用其他复选框
- 是否可以只使用CSS和HTML而不使用Javascript来完全自定义复选框
- 如何在HTML和JavaScript中检查复选框是否为真
- javascript/html 中的复选框
- 在复选框取消选中事件中从HTML下拉列表中删除项目
- 如何更改html中复选框的对齐方式
- 复选框将如何通过javascript触发html中的另一个输入元素
- ng动态生成的html/ionic复选框内的更改不绑定
- 选择多个复选框并将值分配给数组 - HTML/Javascript
- 带有复选框 (html) 的 If/Then 语句
- 任何一个输入所需的文本区域或 HTML 表单中的复选框
- 显示或隐藏基于复选框数据的 HTML 列表,Laravel 4
- 在运行时添加复选框并将其保存在 HTML 文件代码中
- 没有正确传递复选框-html表单的值(javascript)