Changing 'width' of the progress bar in CSS with JQuery
我正在学习JQuery,我想我无法理解一些基础知识。 每次单击其中一个单选按钮时,我都会尝试将进度条的宽度(就像它正在移动一样)更改为+ 2%。 但我的功能是错误的(值+ 2)。 我将不胜感激任何评论。 当我将它改为某个固定值时,它并不会真的像那样。 我想'改变方法'每次都会初始化整个事物。 所以我的问题是将结果写入文件的最佳方法是什么(我现在使用'submit'做什么)并同时增加进度条的'width'值? 任何评论都非常感谢。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | <html> <style> #myProgress { width: 100%; background-color: #ddd; } #progressbar { width: 2%; height: 30px; background-color: #1D1387; text-align: center; line-height: 30px; color: white; } </style> <head> <script src='http://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js'> $(document).ready(function() { $('input[name=score]').change(function(){ $('form').submit(); <!-- progress bar moves on 2% every time the radio button is clicked (form is submitted)--> $('#progressbar').css('width', function(index, value){ return value + 2; }); }); }); </head> <form> <p> Please select one of the variants below: </p><br /> word <br /> <input type="hidden" name="word" value="{{ word }}"/><br /> <label class="rad"><input type="radio" name="score" value="var1" />variant1</label> <label class="rad"><input type="radio" name="score" value="var2" />variant2</label> <label class="rad"><input type="radio" name="score" value="var3" />variant3</label> <label class="rad_other"><input type="radio" name="score" value="var4" />variant4</label><br /> <br /> </form> 0/50 </body> </html> |
如果您提交表单,则表示您正在加载新页面(即使它是同一页面)并且丢失了进度条更改。
如果删除
1 2 3 4 5 | $('input[name=score]').change(function(){ $('#progressbar').css('width', function(index, value){ return"+=2%"; }); }); |
您的请求的解决方案是使用一些Ajax并执行POST请求(请参阅jQuery post())。在SO上有一个问题,你可以在哪里找到这样做的方法:如何使用jquery $ .post()方法提交表单值
另一种解决方案是在生成页面时使用后端语言设置进度条宽度,并跟踪每个请求的进度。
首先,您在JavaScript中使用HTML注释(
其次,阅读
这是一个有效的例子。我更改了注释并将百分比放在变量中。我不得不删除