我正在使用此代码创建一系列下拉列表,一次一个。
https://jsfiddle.net/mbus6w11/17/
我使用此代码禁用之前选择的选项:
$("select.options").change(function () {
$("select.options option[value='" + $(this).data('index') + "']").prop('disabled', false);
$(this).data('index', this.value);
$("select.options option[value='" + this.value + "']:not([value=''])").prop('disabled', true);
$(this).find("option[value='" + this.value + "']:not([value=''])").prop('disabled', false);
});
这创建了另一个数值(varc),可以添加到每个选项(var3)的总和(总和)中:
if (var3 == 1) {
varc = 10;
vartip = 'this is tip1';
} else if (var3 == 2) {
varc = 20;
vartip = 'this is tip2';
} else if (var3 == 3) {
varc = 30;
vartip = 'this is tip3';
} else if (var3 == 4) {
varc = 40;
vartip = 'this is tip4';
} else if (var3 == 5) {
varc = 50;
...
};
sum += varc;
document.getElementById('result').innerHTML = sum;
但是我还需要根据复杂的计算隐藏选项。每次有一个选项可以使总和超过100,我也需要禁用它(在实际选择之前)
有没有办法实现这个目标?
祝你好运, 若昂
答案 0 :(得分:2)
我的第一个选择是创建一个在开始和更改时检查内容的函数。
mean
我的下一个选项是使用javascript创建选择框,这样你就可以控制你想要进出的选项框和更干净的东西。 https://jsfiddle.net/mbus6w11/22/
statistics.mean
希望有所帮助
答案 1 :(得分:1)
我认为这对你来说很难,因为这些功能试图做得太多(太大)。通常很好的做小功能,做一个非常有限的工作,然后返回结果。
例如,所有if语句都可以在一个单独的函数中,该函数返回给定选定选项的值。
然后,您可以使用该功能检查每个剩余选项,如果选择它们,可能的总和是多少。如果潜在金额大于100,那么我们禁用该选项。
DEMO :我创建了JSFiddle demo的修改版本,其中我使用上面的建议描绘了我将如何开始解决它。它不完整,我希望看到更多更改,以使代码更具可读性。但我认为你可以从这里解决剩下的问题。如果您需要任何进一步的帮助,请告诉我。
其他提示是查看 switch-statements ,而不是所有if语句。它们是为这种情况而制造的。我还会查看许多变量名称,因为现在它们不是很具描述性。
所有这一切,都是一个相当复杂的问题,所以我知道它可能很容易变成一团糟。