javascript
  • jquery
  • jquery-ui
  • jquery-ui-progressbar
  • 2017-04-07 67 views 0 likes 
    0
    $.get('jobs', { 
        }, function (responseText) { 
         rt = JSON.parse(responseText); 
         console.log(rt); 
         for (i = 0; i < rt.length; i++) 
         { 
          $("#jobs").append("<tr><td><div id='progressbar"+i+"' class='progressbar'></div></td></tr>"); 
          pval = (rt[i][2]/rt[i][1]) * 100; 
    
          $("#progressbar"+i).progressbar({ 
           value: pval, 
           max: 100 
          }); 
    
         } 
    
        }); 
    

    我已经编写了这个代码来在表的每一行的td上创建进度条。当我为1行工作时,它工作正常,但是在我的Db中添加了多行后,这些值并不准确。 即使pval的值为100,它也会填充进度条的1/4。jquery UI进度条填充减少进度

    +0

    您是使用'.get()'来检索元素还是作为AJAX调用? – Twisty

    回答

    0

    我无法复制该问题。您可能希望编辑您的帖子,并包含更多详细信息,示例数据以及控制台生成的任何错误。

    我创建了以下测试:https://jsfiddle.net/Twisty/0v4q5a8z/

    HTML

    <div class="ui-widget"> 
        <a href="#" id="getProgress" class="button">Get Progress</a> 
        <table id="jobs" width="100%"> 
        <tbody> 
        </tbody> 
        </table> 
    </div> 
    

    的JavaScript

    var progress = [ 
        ["p1", 100, 100], 
        ["p2", 100, 75], 
        ["p3", 100, 22] 
    ]; 
    
    function getProgress(source, target) { 
        /* Ajax Post used for Example purposes 
        ** Example response: 
        ** Array [ 
        ** ["p1", 100, 100], 
        ** ["p2", 100, 80], 
        ** ["p3", 100, 75] 
        ** ] 
        */ 
    
        $.ajax({ 
        url: source, 
        data: { 
         json: JSON.stringify(progress) 
        }, 
        type: "POST", 
        dataType: "json", 
        success: function(responseText) { 
         var rt, pval; 
         rt = responseText 
         console.log(rt.toString()); 
         for (i = 0; i < rt.length; i++) { 
         target.append("<tr><td><div id='progressbar-" + i + "' class='progressbar'></div></td></tr>"); 
         pval = (rt[i][2]/rt[i][1]) * 100; 
         $("#progressbar-" + i).progressbar({ 
          value: pval, 
          max: 100 
         }); 
         } 
        } 
        }); 
    } 
    
    $(function() { 
        $(".button").button(); 
        $("#getProgress").click(function(e) { 
        e.preventDefault(); 
        getProgress("/echo/json/", $("#jobs")); 
        }); 
    }); 
    

    这个测试按预期工作。你的代码可能不那么激烈。函数可能是:

    function getProgress(source, target) { 
        $.getJSON(source, function(responseText) { 
         var rt, pval; 
         rt = responseText 
         for (i = 0; i < rt.length; i++) { 
         target.append("<tr><td><div id='progressbar-" + i + "' class='progressbar'></div></td></tr>"); 
         pval = (rt[i][2]/rt[i][1]) * 100; 
         $("#progressbar-" + i).progressbar({ 
          value: pval, 
          max: 100 
         }); 
         } 
        } 
        }); 
    } 
    
    +0

    增加了一些潜在的改进和计时器:https://jsfiddle.net/Twisty/0v4q5a8z/6/ – Twisty

    相关问题