-3

谁能帮我解释为什么这不像我期望的那样工作。我想要做的是添加到基于下拉的javascript变量。

所以:问题 1 如果是 x=x+1

问题 2 如果是 x=x+3

所以如果两者都是 x=4

现在,这不会让 x 添加到 x,相反,它每次都重新分配 x

<script src="http://code.jquery.com/jquery-1.4.2.min.js" type="text/javascript"></script>
<script>
var z=1
var y=1
</script>
<script>
            $(document).ready(function () {
                $("#checkbox_1").change(function () { 
                if($(this).val() == "Yes") {
                    var x=y;
                    $("#textbox_1").attr('disabled', true);
                    $("#textbox_1").val(x);
                    }
                    else {
                    var x=x-1;
                    $("#textbox_1").attr('disabled', true);
                    $("#textbox_1").val(0);
                    }
                });
            });
</script>   
<script>
            $(document).ready(function () {
                $("#checkbox_2").change(function () { 
                if($(this).val() == "Yes") {
                    var x=y+z;
                    $("#textbox_1").attr('disabled', true);
                    $("#textbox_1").val(x);
                    }
                    else {
                    var x=x-1;
                    $("#textbox_1").attr('disabled', true);
                    $("#textbox_1").val(0);
                    }
                });
            });
</script>    

Do you have your Vheicals Title?<br />
<SELECT class="enteredClassic" id="checkbox_1"/>
<OPTION selected value=No>Select Option</OPTION>
<OPTION value=No>No</OPTION>
<OPTION value=Yes>Yes</OPTION>
</SELECT>
<br />
<br />
Do you earn more then $1,500 per month?<br />
<SELECT class="enteredClassic" id="checkbox_2" />
<OPTION selected value=No>Select Option</OPTION>
<OPTION value=No>No</OPTION>
<OPTION value=Yes>Yes</OPTION>
</SELECT>
<br />
<br />
Your chances of funding: <br />
<SELECT class="enteredYear" id="textbox_1" name=year>
            <OPTION selected value="0">0%</OPTION>
            <OPTION value=1>10%</OPTION>
            <OPTION value=2>20%</OPTION>
            <OPTION value=3>30%</OPTION>
            </SELECT>
4

3 回答 3

2

链接到 jsbin

标记

<label>
  Do you have your Vheicals Title?
  <select class="enteredClassic" id="title">
    <option selected value="No">select option</option>
    <option value="No">No</option>
    <option value="Yes">Yes</option>
  </select>
</label>

<label>
  Do you earn more then $1,500 per month?
  <select class="enteredClassic" id="income">
    <option selected value=No>select option</option>
    <option value=No>No</option>
    <option value=Yes>Yes</option>
  </select>
</label>

<label>
  Your chances of funding:
  <select class="enteredYear" id="chances" name=year>
    <option selected value="0">0%</option>
    <option value="1">10%</option>
    <option value="3">30%</option>
    <option value="4">40%</option>
  </select>
</label>

JS

$(document).ready(function () {
  $(".enteredClassic").change(function () {
    var chances = 0;
    if($("#title").val() == 'Yes') chances++;
    if($("#income").val() == 'Yes') chances += 3;
    $("#chances").val(chances);
  });
});

CSS

select { 
  display: block;
  margin-bottom: 20px;
}
于 2013-07-31T03:34:29.560 回答
2

清理了你的脚本...

<script>
           $(document).ready(function () {
                var x = 0;
                $("#checkbox_1").change(function () { 
                if($(this).val() == "Yes") {
                    x++;
                    $("#textbox_1").prop('disabled', true);
                    $("#textbox_1").val(x);
                    }
                    else {
                    x--;
                    $("#textbox_1").prop('disabled', false);
                    $("#textbox_1").val(x); // I don't understand why this is 0
                    }
                });
                $("#checkbox_2").change(function () { 
                if($(this).val() == "Yes") {
                    x += 3;
                    $("#textbox_1").prop('disabled', true);
                    $("#textbox_1").val(x);
                    }
                    else {
                    x -= 3;
                    $("#textbox_1").prop('disabled', false);
                    $("#textbox_1").val(x); // or this one. shouldn't it be x?
                    }
                });
            });
</script>    

编辑以反映更可接受的用法,.prop而不是.attr.

于 2013-07-31T03:03:26.550 回答
1

我认为你应该像声明 y 和 z 一样全局声明 x。您不能使用您从未声明过的变量,而这实际上是您正在做的事情。

var x = x - 1; //uses the variable x which has not been created yet

而不是在函数 var 中对 x 进行 var'ing x 在 y 和 z 所在的位置。但我可能不明白你的代码试图实现什么。

于 2013-07-31T02:59:30.847 回答