【问题标题】:Pass dynamic div id into javascript without links and hovers将动态 div id 传递给没有链接和悬停的 javascript
【发布时间】:2018-04-21 00:51:01
【问题描述】:

我在一个 while 循环中有多个动态 div id,这个 div id 将在 JavaScript 中用于显示径向进度条。我的问题是,虽然我有唯一的 ID,但我无法将这个唯一的 ID 传递给我的 JavaScript 以显示每个 ID 的不同径向进度。我曾尝试使用 div 类,但这只是在所有进度条中重复循环的最后一个 id。我不想使用链接或悬停来获取唯一 ID,因为我希望 JavaScript 在页面加载时触发。如何让我的 while 循环中的每个 div 正确显示进度条。

sample.php

<?php
    ..................................
    while($obj = $getcDetails->fetch()){
        //div that displays radial progress bar
        echo '
            <div class="page" style="color:#000000;">
                <div id="progress-pie-chart'.$Id.'" data-percent="'.$cId.'">
                    <div class="ppc-progress">
                        <div class="ppc-progress-fill"></div>
                    </div>
                <div class="ppc-percents">
                <div class="pcc-percents-wrapper">
                    <span>%</span>
                </div>
            </div></div></div>';
?>

sample.js

<script>
$(function(){
    var $ppc = $('.progress-pie-chart'),//add dynamic id here to display multiple progress bar unique to that div
    percent = parseInt($ppc.data('percent')),
    deg = 360*percent/100;
    if (percent > 50) {
        $ppc.addClass('gt-50');
    }
    $('.ppc-progress-fill').css('transform','rotate('+ deg +'deg)');
    $('.ppc-percents span').html(percent+'%');
});
</script>

非常感谢任何帮助或指导。

【问题讨论】:

  • 为什么需要知道id?您需要遍历 $ppc 才能一次处理一个。特别是因为您基于百分比的以下逻辑,我假设每个百分比都不同,并且并非所有百分比都> 50
  • 此外,您向我们展示的您在循环中生成的标记看起来不完整。它缺少两个结束 div 标记。
  • @Taplar 这是否需要 JavaScript 在循环内?如果可以,你能告诉我如何在 PHP 循环中添加 JavaScript 函数吗,我过去一直不成功
  • @Taplar,谢谢。在这里复制我的代码时打错了,我已经更新了我的问题

标签: javascript java php jquery html


【解决方案1】:

您可以将这个逻辑建立在一个类上。鉴于进度填充和百分比是进度饼图的子项,您可以通过上下文查找找到需要更改的内容。

$(function(){
  $('.progress-pie-chart').each(function(){
    var $ppc = $(this)
      , percent = parseInt($ppc.data('percent'))
      , deg = 360*percent/100;
      
    if (percent > 50) {
      $ppc.addClass('gt-50');
    }
    
    $ppc.find('.ppc-progress-fill').css('transform','rotate('+ deg +'deg)');
    $ppc.find('.ppc-percents span').html(percent+'%');
  });
});

【讨论】:

  • 感谢您的解释和回答,现在可以使用了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-25
  • 2015-03-03
  • 2012-03-17
  • 2014-12-27
相关资源
最近更新 更多