JQuery获取'id'属性
JQuery get 'id' attribute
因此,我有以下代码生成一个表,并将一个单击函数应用于表中的每个td。它还应用以1开头的增量id。当用户点击td元素时,我试图检索他们点击的<td>
的id。但是选择器的值是[object Window]。我确信这是一件简单的事情,但我在这里的类似问题都没有帮助,我没有看到它
$("#CMGame").click(function() {
$("#TTTContent").hide();
$("#CMContent").show();
var board = $("#CMBoard");
var htmlString = "";
var count = 0;
for (var i = 0; i < 20; i++) {
htmlString += "<tr>";
for (var i2 = 0; i2 < 20; i2++) {
count++;
htmlString += "<td id='" + toString(count) + "'></td>";
}
htmlString += "</tr>";
}
board.html(htmlString);
$("#CMBoard td").click(function() {
var piece = $(this);
var selector = piece.attr('id');
alert(selector);
/*
if (CMBArray[selector] != 1 OR CMBArray[selector] != 2) {
CMBArray[selector] = 1;
piece.addClass('selected');
}
*/
});
});
您的代码中有两个错误,您创建的td
id不能只是一个数字,它必须以字母开头,然后您可以删除toString(count)
并仅使用count
,或者将其更改为count.toString()
,这是正确的方法。
这是规格。对于DOM id
:
https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id
这里是toString()
:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString
toString(count)
至
count.toLocaleString()
toString(count)
实际上就像说this.toString()
,在您的情况下,它基本上意味着window.toString()
,这导致了[object Window]
。
相反,请使用count.toString()
。
这里有一个快速测试:
var count = 0;
console.log('second toString: ' + toString(count) );
console.log('second toString: ' + count.toString );
请记住,无论何时在Javascript中连接字符串,默认情况下都会对所有对象调用toString
方法。例如,这两个表达式产生相同的输出:
var number = 5;
console.log( 'The number is ' + number.toString() );
console.log( 'The number is ' + number );
您正在调用的toString方法实际上是window.toString。不为toString指定父对象,就是在调用全局窗口对象上的方法。这就是为什么您看到"[object Window]",它返回调用对象的字符串表示。
你根本不需要toString。当您将字符串添加到字符串中时,Javascript将其强制转换为数字。
this.id
将返回jQuery元素的id。例如:
$("td").click(function(){
alert(this.id);
});
您的问题出现在事件$("#CMGame")中。单击(function()当试图用toString(count)转换为字符串时,javascript和jquery不明白他们确实理解count。toString()这里是源javascript toString函数。
关于你的一些代码的建议:
首先这个var板=$("#CMBoard");您将html元素传递给一个javascript变量,以便执行此操作。html(htmlString);我认为你这样做是为了让你的函数比使用其他方法来操作DOM更快,但在这种情况下,我们似乎不是在寻找最佳性能,所以其他选项是用这个$("#CMBoard").append(htmlString)保持简单
你为每个元素设置的id是一个数字,这根本不是一个好的做法,而且还有一个关于HTML5到HTML4外观兼容性的建议;注意:使用ASCII字母和数字、"_"、"-"answers"."以外的字符可能会导致兼容性问题,因为它们在HTML4中是不允许的。尽管HTML5中取消了这一限制,但为了兼容性,ID应该以字母开头。你可以在全局属性id中找到它,所以最好设置一个真实的id名称,你可以在代码
htmlString += "<td id='item_" + count.toString() + "'></td>";
中这样做所以id会像id="item_1"一样出现
- Javascript复选框函数:;缺少:在属性id之后"
- 语法错误:缺少:在属性 ID 之后
- 如何使用Google Embed API获取选定的帐户ID和属性ID
- 快速会话 无法设置未定义的属性“id”
- 无法读取属性id成员路由
- 如何以编程方式获取属性Id、视图Id和帐户Id
- SyntaxError:属性id后缺少:
- JSON到带有Django的JS:SyntaxError:缺少:在属性id之后
- Angular JS TypeError:无法读取路由上未定义的属性“id”
- 在 IE8 之前替换了属性(“id”)
- 无效的属性 ID
- 在为 jquery 自动完成设置源代码时获取“语法错误:缺少:在属性 ID 之后”
- 如何根据属性 ID 获取内部 html
- j查询错误 - 语法错误:缺少:在属性 ID 之后
- 缺少解析错误:在属性 ID 之后
- Jquery:检查属性 id 是否有特定的模式
- 属性ID后缺少冒号,Firebase
- Dojo确认对话框'缺少:在属性id'之后;和'找不到节点'
- jQuery)SyntaxError:缺少:在属性id之后)
- Jquery获取最近一次单击的属性ID