【发布时间】:2011-10-26 14:10:57
【问题描述】:
我一直对下面的代码感到困惑。有人能告诉我我做错了什么,javascript 无法访问值 p 吗?谢谢!
<% p=progress_for(contest_score) %> # p is non-zero
<script type="text/javascript">
$(function(){
$('#contest_progressbar').progressbar({value: <%=p%>});
<!--value p becomes 0 when rendered by jquery-->
$("#contest_progressbar").css({ 'background': 'LightYellow' });
$("#contest_progressbar > div").css({ 'background': 'Orange' });
$('#contest_progressbar span.text').text(<%=p%>+'%')
<!--value p becomes 0 when rendered by jquery-->
});
</script>
progress: <%=p%> progress bar should be below: # p is the correct value here
<div id='contest_progressbar' style="margin-left:20px; height: 20px;">
<span class="text"></span>
</div>
编辑:改为使用直接脚本标签。虽然同样的问题 EDIT2:现在似乎是一个 JQuery 问题。请参阅对 Bryan 的回答的评论中的 html
【问题讨论】:
-
从我所看到的理论上应该可以正常工作。当您在浏览器中“查看源代码”时,它实际上是否在 HTML 输出中打印为 processbar({value: 0})?
-
我假设 javascript 行末尾的 ruby cmets 是您在这里为我们添加的,是吗?
-
另外,您使用 JavaScript 来固定值(最好是
<span><%= text %></span>)和样式信息(最好在 CSS 文件中)有什么特别的原因吗? -
更正:ghayes,是的,查看源代码显示 {value: 0}。但该值不应为零。 jaydel 是的 cmets 被添加到这个问题中,而不是在我的代码中。试着解释一下区别。 @Bryan,跨度文本代码是从 SO 示例中借用的。感谢您的建议,我会做出改变。现在,进度条正在等待!
-
[更正:查看源代码实际上显示了正确的非零值,我的错误。但是在 Firebug 中查看时,进度条的 div 的宽度值为 0。如果我在 Firebug 中将其更改为其他值,则会显示进度条。 ]
标签: javascript ruby-on-rails jquery-ui progress-bar actionview