JQuery get' id'属性

时间:2015-11-27 16:24:46

标签: javascript jquery html

所以我有以下代码生成一个表并将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');
        }
        */


    });

});

6 个答案:

答案 0 :(得分:1)

代码中的toString错误。变化

toString(count)

count.toLocaleString()

答案 1 :(得分:1)

toString(count)实际上就像说this.toString(),在您的情况下基本上是window.toString(),这会产生[object Window]

相反,请使用count.toString()

这是一个快速测试:

&#13;
&#13;
var count = 0;

console.log('second toString: ' + toString(count) );

console.log('second toString: ' + count.toString );
&#13;
&#13;
&#13;

请记住,每当您在Javascript中连接字符串时,默认情况下会在所有对象上调用toString方法。例如,这两个表达式产生相同的输出:

&#13;
&#13;
var number = 5;

console.log( 'The number is ' + number.toString() );
console.log( 'The number is ' + number );
&#13;
&#13;
&#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;

  • 一样出现