2

尝试做我的第一个 Javascript if / else。基本上我想根据从单选框字段中选择的数字显示 DIV。如果选择了选项 3,我希望 div 1、2 和 3 可见。我显然在某个地方出错了。非常感谢您的想法/帮助。

<script type="text/javascript" >

$(document).ready(function() {

$("input[name$='supplier']").click(function() {

var test = $(this).val();

if (test=1)
{
$("div.hidesupplier").hide();
$("#suppliersourced1").show();
}

else if (test=2)
{
$("div.hidesupplier").hide();
$("#suppliersourced1").show();
$("#suppliersourced2").show();
}

else if (test==3)
{
$("#suppliersourced1").show();
$("#suppliersourced2").show();
$("#suppliersourced3").show();
}

});
});
</script>

Number of Suppliers:
<label><input name="supplier" type="radio" value="1">1.</label> 
<label><input name="supplier" type="radio" value="2">2.</label>
<label><input name="supplier" type="radio" value="3">3.</label>

<div id="suppliersourced1" class="CF hidesupplier" style="display: none;">Supplier One</div>
<div id="suppliersourced2" class="CF hidesupplier" style="display: none;">Supplier Two</div>
<div id="suppliersourced3" class="CF hidesupplier" style="display: none;">Supplier Three</div>
4

2 回答 2

5

更清洁和更快的版本是:

$("input[name$='supplier']").click(function() {
    var test = $(this).val();
    $("div.hidesupplier").each(function() {

        // get the id of the current supplier, eg: "suppliersourced1"   
        var myID = $(this).attr('id');

        // get the last character and convert it to a number
        myID = parseInt(myID.substring(myID.length()-1, 1), 10);

        // show all with id less than or eq to test 
        // hide all with id more than test
        if(myID <= test) $(this).show(); else $(this).hide();
    });
});

更简洁,因为您几乎没有重复的代码。更快,因为您不会盲目隐藏所有内容并显示特定元素,而是一次性隐藏和显示适当的元素。更快还因为要传输、解析和执行的 JS 代码字节数更少。

于 2013-02-01T06:00:40.270 回答
4

在前两个条件中,您有 = 而不是 ==。

于 2013-02-01T05:57:25.097 回答