gpt4 book ai didi

带有动态div id的javascript for循环

转载 作者:行者123 更新时间:2023-12-02 18:28:22 25 4
gpt4 key购买 nike

这可以根据第一个下拉菜单的结果动态创建第二个下拉菜单:

for (var i = 0; i < 1; i++) {
$('#wdiv' + i).change(function() {
var wdiv = $(this).val();

$.ajax({
type: "POST",
url: "populate_classes.php",
data: 'theOption=' + wdiv,
success: function(whatigot) {
$('#class_list' + i).html(whatigot);
}

}); //END $.ajax
}); //END dropdown change event
}

为什么下拉选择#wdiv0的输入会改变下拉菜单#class_list1?我希望 #wdiv 选择设置 #classlist0 下拉选择。

这是表格的一部分:

<fieldset><legend>Select Divisions</legend>              
<table width="100%" border="0" cellspacing="0" cellpadding="5">
<tr>
<td><div align="center"><u><strong>Name</strong></u></div></td>
<td><div align="center"><u><strong>Division</strong></u></div></td>
<td><div align="center"><u><strong>Class</strong></u></div></td>
</tr>
<?php for ($i = 0; $i < $wrestlerkey; $i++) {
$sql = 'SELECT * FROM tourn_division AS td WHERE t_num = ?';
$divresult = $dbConnect->fetchAll($sql, $_SESSION['tourn_id']);
$divcount = count($divresult);
?>
<tr>
<td width="20%" bgcolor="#CCCCCC"><div align="right"><?php echo $_SESSION['wfirst'][$i] . " " . $_SESSION['wlast'][$i] . ":"; ?></div></td>
<td>
<select name="<?php echo "wdiv" . $i ?>" id="<?php echo "wdiv" . $i ?>">
<?php for ($d = 0; $d < $divcount; $d++) { ?>
<option value="<?php echo $divresult[$d]->div_num; ?>"><?php echo $divresult[$d]->div_name; ?></option>
<?php } ?>
</select></td>
<td>
<div id="<?php echo "class_list" . $i ?>"></div>
</td>
</tr>
<?php } ?>
</table>
</fieldset>

最佳答案

发生这种情况是因为您创建的 AJAX 回调处理程序共享对同一变量“i”的引用。为了避免这种情况,您可以使用单独的函数 edit 创建“成功”处理程序 - 事实上,由于此处代码结构的性质,您需要在单独的功能:

function makeChangeHandler(listIndex) {
return function() {
var wdiv = $(this).val();

$.ajax({
type: "POST",
url: "populate_classes.php",
data: 'theOption=' + wdiv,
success: function(whatigot) {
$('#class_list' + listIndex).html(whatigot);
}
});
};
}

// ...

for (var i = 0; i < 2; i++) { // for 2, substitute actual number of elements involved
$('#wdiv' + i).change( makeChangeHandler(i) );
}

该函数将返回实际的处理函数。 “makeSuccessHandler”返回的每个此类函数都将拥有其自己的循环索引的私有(private)副本

(注意所做的编辑 - 整个“更改”处理程序需要在辅助函数中构造。)

关于带有动态div id的javascript for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18110082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com