我正在尝试构建一个使用数组数据的滑块控制条形图。我已经设法使用一些非常混乱的代码here来使其工作,但我制作了一个更清晰的版本here应该可以工作但不能。实际上,它可以完美地从数组中捕获数据,但是当我输入动画框的代码时,它会中断。然后滑块停止移动,如果盒子中有实数(即第1列),则盒子只有动画。我只能发布两个链接,但如果您将该文件重命名为laborslider2_noslide.html,则可以看到带有工作滑块的版本。
让我感到困惑的是,尽管滑块处理方式已经破坏,但数字传递给变量(column1,column2和column3),并且其中带有实数的框动画,但没有变量盒做了一件事。我不明白为什么会这样。
我是jquery的新手,所以它可能是非常愚蠢的东西。希望这真的很蠢。 ;)
这是我的代码:
<!DOCTYPE html>
<html class="no-js">
<head>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<!--<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>-->
<script type="text/javascript" src="http://img.seiu.org/js/custom-link-tracking.js"></script>
<script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/jquery-ui.min.js" type="text/javascript"></script>
<script>
$(document).ready(function () {
var updateSizes = function (s) {
var column1 = s[0];
var column2 = s[1];
var column3 = s[2];
return "Column 1: " + column1 + ", Column 2: " + column2 + ", Column 3: " + column3;
},
laborData = Array(14);
laborData[0] = [100, 6, 38];
laborData[1] = [300, 6.5, 38.5];
laborData[2] = [500, 7, 39];
laborData[3] = [6.5, 7.5, 40];
laborData[4] = [7, 8, 40.5];
laborData[5] = [8, 9, 42];
laborData[6] = [8.5, 9.5, 42.5];
laborData[7] = [9, 10, 43];
laborData[8] = [9.5, 10.5, 44];
laborData[9] = [10, 11, 44.5];
laborData[10] = [10.5, 11.5, 45];
laborData[11] = [11, 12, 46];
laborData[12] = [11.5, 12.5, 46.5];
laborData[13] = [12, 13, 47];
$("#slider").slider({
range: "max",
min: 0,
max: 13,
step: 1,
slide: function (event, ui) {
$("#amount").val(updateSizes(laborData[ui.value]));
$("#box").animate({"height":300});
$("#box2").animate({"height":column2});
$("#box3").animate({"height":column3});
}
});
// $("#slider-men").slider({
// range: "max",
// min: 0,
// max: 13,
// step: 1,
// slide: function (e, ui) {
// $("#amount-men").val(updateSizes(laborData[ui.value]));
// }
// });
});
</script>
</head>
<body>
<div id="slider"></div>
<label for="amount">Data:</label> <input type="text" id="amount" style="border:0; color:#f6931f; font-weight:bold;width:300px;" />
<p>
<div id="box" style="background:#98bf21;height:100px;width:100px;margin:6px; float: left;">
</div>
<div id="box2" style="background:#98bf21;height:100px;width:100px;margin:6px; float: left;">
</div>
<div id="box3" style="background:#98bf21;height:100px;width:100px;margin:6px; float: left;">
</div>
</body>
</html>
所以是的。任何帮助都会很棒。我很难过。
答案 0 :(得分:1)
您必须在全局范围内定义column1/2/3
变量,因为您在一个函数中设置它并在另一个函数中访问它。
我已经设置了一个小提琴并修好了,看一看。我相信你想让盒子动画并行,所以我把盒子动画的排队设置为假
正在使用 demo
答案 1 :(得分:0)
在我看来,您正在导入jQuery AFTER 您自己的脚本。这将导致原始脚本无法初始化。至少在您提供的链接(干净版本)中就是这种情况。