javascript:通过单击循环中的当前值获取值

时间:2013-04-03 04:41:19

标签: javascript jquery

我正在构建数据表并通过在数据库中设置总记录来计算它们的总数。

现在我对JavaScript中的点击事件感到困惑。 这就是我这样做的方式:

 for (var cnt = pageno; cnt < pageno + 5; cnt++) {
                $("#newList").append('<li id="pageno" value=""' + cnt + ' onclick="GetPageno();" > ' + cnt + '</li>');
            }

这是我当前的循环,将设置5个列表的数量。现在,如果我想获得当前列表的值,那么我这样做:

function GetPageno() {
        //this.val();


        alert(document.getElementById('pageno').val());


    }

我在网页上有1到5个数字列表。

如何获得我点击的那个数字的值?

实施例。如果我单击“5”,则警报应该以值“5”出现,与所有列表元素相同。

8 个答案:

答案 0 :(得分:2)

通过执行此<li id="pageno",您不止一次重复相同的ID,这是不正确的。

而是使用<li id="pageno_'+cnt+'"并使用以下代码。

$(document).on('click','li[id^="pageno_"]',function(){
   alert($(this).attr('value'));
});

DEMO

答案 1 :(得分:1)

您在val()上调用li这是不正确的,您可以使用.attr(“value”)如果您使用data()属性,例如data-someattributeName,那会更好让它更清楚。您将相同的ID分配给多个不合法的元素。为它们分配一个类并将事件与类绑定,您将能够获得所需的属性。

在创建li元素时将类添加到li元素,您没有正确地将cnt分配给value并将空字符串赋值给

for (var cnt = pageno; cnt < pageno + 5; cnt++) {
     $("#newList").append('<li id="pageno" class="pageno" value=""' + cnt + ' onclick="GetPageno();" > ' + cnt + '</li>');
}

使用class selector

绑定点击事件
$(".pageno").click(function() {
    alert($(this).attr('value'));
})

Live Demo ,使用data()和类选择器。在这里,我还为Ids分配了唯一 pageno

pageno = 1;
for (var cnt = pageno; cnt < pageno + 5; cnt++) {
     $("#newList").append('<li id="pageno"'+cnt+' class="pageno" data-custom="' + cnt + '" onclick="GetPageno();" > ' + cnt + '</li>');
}

$(".pageno").click(function() {
    alert($(this).data('custom'));
});

答案 2 :(得分:1)

ID必须是唯一的,您可以这样做:

for (var cnt = pageno; cnt < pageno + 5; cnt++) {
   $("#newList").append('<li class="pageno" value="'+cnt+'"> ' + cnt + '</li>');
}

$("#newList").on("click", "li.pageno", function() {
  alert( $(this).val() );
});

jsFiddle Demo

答案 3 :(得分:1)

您的value属性存在一个小错误。在cnt之后移动的双引号。 并将li对象传递给函数,即GetPageno(this),如下所示,

 for (var cnt = 1; cnt <= 5; cnt++) {
     $("#newList").append('<li id="pageno" value="' + cnt + '" onclick="GetPageno(this);" > ' + cnt + '</li>');
 }

然后获取方法中传递的li对象的值。

function GetPageno(obj) {
    alert(obj.value);
}

答案 4 :(得分:0)

ID应该是唯一的,您应该使用类来代替。然后,您可以使用jQuery.each()来迭代您的课程:

$(".pageno").each(function() {
    alert($(this).attr('value'));
})

答案 5 :(得分:0)

由于以下原因,您遇到了问题:

  • id必须是唯一的,您应该使用class
  • 您还应该在事后附上您的活动,而不是内联(首选项)。
  • 请将您的元素称为this并使用.text()而不是.val(),因为value不是li上的有效属性。< / p>

    for (var cnt = 1; cnt < 5; cnt++) {
        $("#newList").append('<li class="pageno" ' + cnt + '>' + cnt + '</li>');
    }
    $('.pageno').click(GetPageno);
    
    function GetPageno() {
        alert($(this).text());
    }
    

答案 6 :(得分:0)

这样做:

for (var cnt = pageno; cnt < pageno + 5; cnt++) {
                    $("#newList").append('<li id="pageno"+cnt value=""' + cnt + ' onclick="GetPageno(this.value);" > ' + cnt + '</li>');
                }
    function GetPageno(val) {


            alert(val);


        }

答案 7 :(得分:0)

你应该使用所有

  • 的类名而不是id。 id必须在整个html页面中唯一

    您可以更改代码,如

    for (var cnt = pageno; cnt < pageno + 5; cnt++) {
     $("#newList").append('<li class="pageno" value="'+cnt+'"> ' + cnt + '</li>');
    }
    

    并在文档就绪范围中添加新的jquery函数

    $(".pageno").click(function() {
    alert($(this).attr('value'));
    

    })