所以我有以下代码生成一个表并将click函数应用于表中的每个td。它还应用从1开始的增量ID。当用户点击td元素时,我试图检索他们点击的<td>
的ID。但是,selector的值是[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');
}
*/
});
});
答案 0 :(得分:1)
代码中的toString错误。变化
toString(count)
到
count.toLocaleString()
答案 1 :(得分:1)
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 );
&#13;
请记住,每当您在Javascript中连接字符串时,默认情况下会在所有对象上调用toString
方法。例如,这两个表达式产生相同的输出:
var number = 5;
console.log( 'The number is ' + number.toString() );
console.log( 'The number is ' + number );
&#13;
答案 2 :(得分:1)
您的代码中有2个错误,您创建的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
答案 3 :(得分:0)
您调用的toString方法实际上是window.toString。 通过不为toString指定父对象,您将在全局窗口对象上调用该方法。这就是为什么你看到&#34; [对象窗口]&#34;,它返回一个调用对象的字符串表示。
根本不需要toString。当您将数字添加到字符串时,Javascript会将数字转换为字符串。
答案 4 :(得分:-1)
this.id
将返回jQuery元素的id。 E.g:
$("td").click(function(){
alert(this.id);
});
答案 5 :(得分:-1)
您遇到的问题是$(&#34;#CMGame&#34;)。click(function() 当尝试使用toString(count)转换为字符串javascript和jquery不明白他们确实理解count.toString()这里是源javaScript toString function。
有关您拥有的一些代码的建议:
首先这个var board = $(&#34;#CMBoard&#34;);你将html元素传递给javascript变量,你可以做这个board.html(htmlString);我认为你这样做,所以你的功能可以比使用其他方法操作DOM更快,但在这种情况下,它看起来我们不是在寻找最好的表现,所以其他选项是保持简单与这个$(&#34;# CMBoard&#34;)追加(htmlString)
您为每个元素设置的ID是一个完全不合适的数字,并且还建议兼容HTML5到HTML4的外观;
注意:使用ASCII字母和数字以外的字符,&#39; _&#39;,&#39; - &#39;和&#39;。&#39;可能会导致兼容性问题,因为HTML 4中不允许这样做。虽然HTML 5中已经解除了这个限制,但ID应该以兼容字母开头。您可以在global attribute id中找到此信息,因此最好设置一个真实的ID名称,您可以在代码htmlString += "<td id='item_" + count.toString() + "'></td>";
中执行此类操作
所以id会像id =&#34; item_1&#34;