Lia*_*iam 7 html javascript xml jquery json
对于误导性的标题感到抱歉,但我不确定如何写它.
我有下表...

我想生成一个简单的计算器,用于比较来自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');
});
Run Code Online (Sandbox Code Playgroud)
如果你选择French,5a+你会进入5.8 and V-Diff输出......
小智 1
肯定有不同的方法可以做到这一点,但在我看来,这取决于数据结构。我个人的看法是采用包含一系列具有等级的国家/地区的数据结构。然后,等级实际上是成对的(显示值/实际值),以说明数据中的差距。这里的技巧是,我们不想在选择中显示空显示值,但我们确实需要数据(实际值)进行转换。之后,jQuery 的事情就非常简单了。
数据是这样的:
var countryGrades = [
{ country : "France", grades : [
["4", "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.6"],
["5.7", "5.7"],
["", "5.7"],
["5.8", "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"],
["", ""],
["", ""]
]}
];
Run Code Online (Sandbox Code Playgroud)
事件处理等如下:
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, function(index, 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);
});
Run Code Online (Sandbox Code Playgroud)
在这里查看工作中的 JSFiddle:http://jsfiddle.net/tetonraven/SVj63/
| 归档时间: |
|
| 查看次数: |
408 次 |
| 最近记录: |