javascript – 使用jQuery,XML,JSON,JS遍历表

前端之家收集整理的这篇文章主要介绍了javascript – 使用jQuery,XML,JSON,JS遍历表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
对于误导性的标题很抱歉,但我不确定如何写它.

我有下表…

我想生成一个简单的计算器,比较来自2个给定参数的行中的所有数据.

我会要求我的用户先选择一个国家/地区,然后在该列中选择一个值.执行此操作后,您可以提交表单,它将从给定的行输出正确的值…

我试着去表达我的意思……

http://jsfiddle.net/SLCaN/2/

做这个的最好方式是什么?我所知道的唯一方法就是拥有一个巨大的if / else语句,这将使我永远写作.

$('.country').on('change',function(){
// If USA show corrent dropdown
if( $(this).val() == 'usa'){
    $('.hiddenGrade').hide();
    $('.iniValusa').show();
} else if( $(this).val() == 'gb'){
    $('.hiddenGrade').hide();
    $('.iniValgb').show();
} else {
    $('.hiddenGrade').hide();
    $('.iniValfr').show();
}
});

$('input[type="submit"]').on('click',function(e){
    e.preventDefault();
    $('p').text('Values output here');
});

如果你选择法语和5a你会在输出中获得5.8和V-Diff ……

解决方法

肯定有不同的方法可以做到这一点,但在我看来,它归结为数据结构.我个人的看法是使用具有一系列成绩的国家/地区的数据结构.然后,成绩实际上是成对(显示值/实际值)以说明数据中的差距.这里的技巧是我们不想在select中显示显示值,但我们确实需要数据(实际值)进行转换.在那之后,jQuery的东西很简单.

这样的数据:

var countryGrades = [
    { country : "France",grades : [ 
        ["4","4"],["",["5a","5a"],["5a+","5a+"],["5b","5b"],["5b+","5b+"],["5c","5c"],["5c+","5c+"],["6a","6a"],["6a+","6a+"],["6b","6b"] 
    ]},{ country : "USA",grades : [ 
        ["5.6","5.6"],["5.7","5.7"],["5.8","5.8"],["5.9","5.9"],["5.10a","5.10a"],["5.10b","5.10b"],["5.10c","5.10c"],["5.10d","5.10d"]
    ]},{ country : "UK",grades : [ 
        ["",""],["Mod","Mod"],["Diff","Diff"],["V-Diff","V-Diff"],["4a","4a"],["4b","4b"],["4b VS","4b VS"],["4c HVS","4c HVS"],["5a E1","5a E1"],""]
    ]}
];

事件处理等,如下所示:

function loadGrades(countryGradesIndex) {
    var gradeSelect = $("#grade");
    gradeSelect.empty();        
    $.each(countryGrades[countryGradesIndex].grades,function(index,grade) {
        if (grade[0] != "") {
            gradeSelect.append($("<option></option>").attr("value",index).text(grade[0]));
        }           
    });
}

$.each(countryGrades,countryGrade) {       
    $("#country").append($("<option></option>").attr("value",index).text(countryGrade.country));
});

$("#country").on("change",function() {
    loadGrades($("#country").val());
});

loadGrades(0);

$("#convert").on("click",function() {
    var gradeIndex = $("#grade").val();
    var gradeConversion = "";
    $.each(countryGrades,function(countryGradesIndex) {
        gradeConversion += countryGrades[countryGradesIndex].country + ": " + countryGrades[countryGradesIndex].grades[gradeIndex][1] + "<br>";
    });

    $("#conversions").html(gradeConversion);
});

在这里查看一个正在运行的JSFiddle:http://jsfiddle.net/tetonraven/SVj63/

猜你在找的jQuery相关文章