我正在制作开关车及其各自的型号。数据来自带有php的数据库。可能会更像这样的动态吗? (较短的代码)。抱歉我的英语不好。
选择
<select id="main_list">
<option value="default" selected>Marca</option>
<?php
/* marcas */
$Alfa_Romeo=39;
$Chevrolet=33;
$Chrysler=40;
$Citroën=42;
$Dodge=41;
$Fiat=35;
/* ... */
$Registros=array();
$Registros=TraerMarcas();
if (!empty($Registros)) {
$cntRegistros=count($Registros);
}
?>
<?php for ($i=0; $i < $cntRegistros ; $i++) { ?>
<option value="<?php echo $Registros[$i]['marca'] ?>"><?php echo $Registros[$i]['marca'] ?></option>
<?php } ?>
</select>
<select id="brand" disabled > <option value="default" selected>Modelo</option></select>
<select id="version" disabled ><option value="default" selected>Cilindrada</option></select>
JS
$( document ).ready(function() {
$(function() {
var sel, i,
list = [ <?php for ($i=0; $i < $cntRegistros ; $i++) { echo "'".$Registros[$i]['marca']."',"; } ?> ],
Fiat = [ <?php
$Modelo=array();
$marca=$Fiat;
$Modelo=TraerModelo($marca);
if (!empty($Modelo)) {
$cntModelo=count($Modelo);
}
for ($i=0; $i < $cntModelo ; $i++) { echo "'".$Modelo[$i]['modelo']."',"; }
?> ],
Chevrolet = [ <?php
$Modelo=array();
$marca=$Chevrolet;
$Modelo=TraerModelo($marca);
if (!empty($Modelo)) {
$cntModelo=count($Modelo);
}
for ($i=0; $i < $cntModelo ; $i++) { echo "'".$Modelo[$i]['modelo']."',"; }
?> ],
Ford = [ <?php
$Modelo=array();
$marca=$Ford;
$Modelo=TraerModelo($marca);
if (!empty($Modelo)) {
$cntModelo=count($Modelo);
}
for ($i=0; $i < $cntModelo ; $i++) { echo "'".$Modelo[$i]['modelo']."',"; }
?> ],
Cilindrada = [ '1.2','1.3','1.6','2.0','2.5', ],
dev_default = '<option value="default" selected>Modelo</option>',
os_default = '<option value="default" selected>Cilindrada</option>';
sel_marca = $('#brand');
sel_cilin = $('#version');
$('select').change(function() {
switch (this.id) {
case 'main_list':
$('.secondary').hide();
sel_marca.find('option').remove();
sel_marca.append(dev_default);
sel_marca.show();
$('#brand').removeAttr('disabled');
if (this.value == 'Fiat') {
for (i = 0; i < Fiat.length; i++) {
$("#brand").append(
'<option value="' + Fiat[i] + '">' + Fiat[i] + '</option>'
);
}
} else if (this.value == 'Chevrolet') {
for (i = 0; i < Chevrolet.length; i++) {
$("#brand").append(
'<option value="' + Chevrolet[i] + '">' + Chevrolet[i] + '</option>'
);
}
} else if (this.value == 'Ford') {
for (i = 0; i < Ford.length; i++) {
$("#brand").append(
'<option value="' + Ford[i] + '">' + Ford[i] + '</option>'
);
}
}
break;
case 'brand':
sel_cilin.find('option').remove();
sel_cilin.append(os_default);
sel_cilin.show();
$('#version').removeAttr('disabled');
for (i = 0; i < Cilindrada.length; i++) {
$("#version").append(
'<option value="' + Cilindrada[i] + '">' + Cilindrada[i] + '</option>'
);
};
break;
}
});
});
})
请注意,我必须重复18个汽车品牌的流程。 我想象在第一选择器中创建根据该品牌选择的变量。类似的东西:
var sel, i,
list = [ <?php for ($i=0; $i < $cntRegistros ; $i++) { echo "'".$Registros[$i]['marca']."',"; } ?> ],
CarBrand /* this variable changes according to the variable list */ = [ <?php
$Modelo=array();
$marca=$CarBrand; /* Here the dynamic variable is repeated, calling the database auto brand and bringing selected models that mark */
$Modelo=TraerModelo($marca);
if (!empty($Modelo)) {
$cntModelo=count($Modelo);
}
for ($i=0; $i < $cntModelo ; $i++) { echo "'".$Modelo[$i]['modelo']."',"; }
?> ],
以下是我依靠创建此内容的jsFiddle。
我希望我的想法不会太疯狂,并希望他们能够理解我的问题。谢谢你的阅读。
答案 0 :(得分:0)
1)使用PHP's foreach()而不是浪费3行代码获取计数,在计数上执行for()循环...等等
2)查看代码,确定哪些内容看起来完全相同(品牌/型号除外),并为每个块创建函数(PHP functions和/或Javascript functions)。然后将您的品牌/型号传递给该功能,瞧 - 您正在构建DRY code。
我认为除此之外的任何事情都只是为您编写代码。我希望它有助于引导你走向正确的方向
答案 1 :(得分:0)
我得到了这个并且它有效:)
对于品牌汽车:
var sel, i,
list = [ <?php for ($i=0; $i < $cntRegistros ; $i++) { echo "'".$Registros[$i]['marca']."',"; } ?> ],
/**/
<?php for ($i=0; $i < $cntRegistros ; $i++) { echo $Registros[$i]['marca']; ?> = [
<?php
$Modelo=array();
$marca=$$Registros[$i]['marca'];
$Modelo=TraerModelo($marca);
if (!empty($Modelo)) {
$cntModelo=count($Modelo);
};
for ($k=0; $k < $cntModelo ; $k++) { echo "'".$Modelo[$k]['modelo']."',"; }
?> ],
<?php }; ?>
第二个选择器:
('#brand').removeAttr('disabled');
if (this.value == 'Alfa_Romeo') {
for (i = 0; i < Alfa_Romeo.length; i++) {
$("#brand").append(
'<option value="' + Alfa_Romeo[i] + '">' + Alfa_Romeo[i] + '</option>'
);
}
<?php for ($k = 0; $k < $cntRegistros; $k++) { ?>
} else if (this.value == <?php echo "'".$Registros[$k]['marca']."'" ?> ) {
for (i = 0; i < <?php echo $Registros[$k]['marca'] ?>.length; i++) {
$("#brand").append(
'<option value="' + <?php echo $Registros[$k]['marca'] ?>[i] + '">' + <?php echo $Registros[$k]['marca'] ?>[i] + '</option>'
);
}
<?php } ?>