【发布时间】:2011-11-24 02:20:21
【问题描述】:
我目前正在为门户网站上的个人资料页面制作 YUI 进度条,但在 AJAX 调用后更新进度条时遇到了麻烦。
这是 view.jsp 中的初始代码,它在页面加载时呈现进度条;
var pb = new YAHOO.widget.ProgressBar({value:<c:out value="${percentage}" />,minValue:0,maxValue:100}).render('divid');
当用户在页面上编辑一个字段时,会有一个 AJAX 调用来更新字段以及配置文件完成的百分比值。
这里也运行了一个函数,它应该更新进度条,但它不起作用。
function() {
items = this.get('responseData');
var percentage = items[0].value;
document.getElementById('percent').innerHTML = percentage + '%';
var element = document.getElementById("divid");
element.innerHTML = "";
renderProgressBar(percentage, "divid");
}
function renderProgressBar(percentage, id){
alert(percentage);
var pb = new YAHOO.widget.ProgressBar({value:10, minValue:0, maxValue:100}).render(id);
pb.set('value', percentage);
}
百分比值正在更新,因为我正在更新“百分比”div 的 innerHTML,并且它正在正确更新。
我还在 renderProgressBar 中显示一个警报,以确保那里的值也是正确的。
然而,在更新栏时,它只是不起作用,该值始终为 null 或为空。
有什么想法吗?
我还尝试在清除 div 标签后硬编码添加一个全新的进度条,这是呈现页面时的输出;
YAHOO.widget.ProgressBar({value:, minValue:0, maxValue:100}).render('divid');
如你所见,值为空。
更新:
出于绝望,我还尝试了另一个功能,我从其中一个元素中提取百分比,值得一试,但仍然没有价值......
function testFunction(percentage){
var el=document.getElementById('percent');
var pb = new YAHOO.widget.ProgressBar({value:el,minValue:0,maxValue:100}).render('basic');
}
【问题讨论】:
-
是否有可能必须将该百分比值转换为数字,然后才能将其作为 ProgressBar 的参数传递?我不知道这个构造函数期望什么,但它看起来可能......
-
@Gatekeeper 我用 parseFloat() 试了一下,还是没有骰子。问题似乎出在我渲染新 ProgressBar 的语句中。硬编码的值当然显示得很好,但是当我把一个变量放在那里时,它不想在运行时显示。
标签: javascript progress-bar yui