0

我从http://uvumitools.com/odometer.html下载了里程表样本, 但只有 Datalist 中的第一个元素获得了里程表,其他元素没有显示里程表。这是代码

<script type="text/javascript" src="js/UvumiOdometer-compressed.js"> </script>
<link rel="stylesheet" type="text/css" media="screen" href="css/uvumi-odometer.css"
<script type="text/javascript">
  var odo2 = new UvumiOdometer('odometer2', { digits: 3 });
</script>`

<asp:DataList ID="dlEquipment" runat="server" DataKeyField="Device_Id" RepeatDirection="Horizontal" RepeatColumns="5" Width="100 > <ItemTemplate> <div id="odometer2<%# Eval("count")%> </div></ItemTemplate>

4

2 回答 2

1

因为您有多个具有相同 ID 的元素,所以它仅适用于第一个元素。

更改项目模板以包含脚本 - 初始化新里程表 - 因此它将根据任何键列为 odemter div 填充不同的 id

试试这个

<ItemTemplate>
    <div id='odometer<%# Eval("Device_Id") %>'>
        <%# Eval("count")%>
    </div>

    <script type="text/javascript">
        new UvumiOdometer('odometer<%# Eval("Device_Id")%>', { digits: 3 });
    </script>

</ItemTemplate>
  • 我假设“Device_Id”是一个唯一的列
于 2013-08-17T09:34:48.027 回答
0

这是因为您在列表元素中使用静态 id odometer2,文档中的 ID 应该是唯一的,否则 document.getElementById(id) 将始终返回具有给定 id 的第一个元素。

如果您使用的是 jQuery,您可以向 div 添加一个类属性

<ItemTemplate> <div class="odometer2"> </div></ItemTemplate>
then
<script type="text/javascript">
jQuery(function($){
    $('.odometer2').each(function(){
        new UvumiOdometer(this, { digits: 3 });
    })
})
</script>
于 2013-08-17T11:14:29.583 回答