Я использую jQuery, чтобы взять данные из XML-файла и сохранить их в строку.Строка является оператором switch, которым я хочу стать функцией.
$.get('type.xml', function(xml) {
var cases=[];
$(xml).find('type').each(function(){
index=parseInt($(this).find('earn').text());
if($.isArray(cases[index])){
cases[index].push($(this).find('name').text());
}else{
arr=$.makeArray($(this).find('name').text());
cases[index]=arr;
}
});
var autoearn="function(x){switch(x){";
for(i=0;i<=100;i+=5){
if($.isArray(cases[i])){
$.each(cases[i], function(index,v){
autoearn+='case "'+v+'":';
});
autoearn+='$("input[name^=\'earn\']").val('+i+');break;';
}}
autoearn+='}}';
});
В первом разделе создается двумерный массив, который связывает массив наблюдений с их результирующим выводом по их индексу.Таким образом, что-то, что зарабатывает $ 10 (например, Meeting), будет сохранено в case [10] (Meeting = case [10] [0]).
Вторая часть записывает строку, которая делает оператор put в операторе switch.это выглядит примерно так:
function(x){
switch(x){
case "Meeting":
$("input[name^='earn']").val(10);
break;
case "Event1":
case "Event2":
$("input[name^='earn']").val(20);
break;
}
}
Обратите внимание, что синтаксис для случаев переключения приводит к тому, что Event1 и Event2 имеют одинаковый результат.
Теперь autoearn - это просто строка, содержащая код дляФункция, которую я хочу.Как превратить в функцию?Есть лучший способ сделать это?Я подумываю отправить его через PHP, чтобы вернуть его обратно в jQuery, но все это кажется действительно косвенным, и, вероятно, есть более простой способ сделать это.