如何分离foreach循环的不同值,解决给input赋值仅获取最后一个值的问题
问题原因
- 代码在foreach循环内重复定义同名的
addSizeToForm函数,JS中后定义的同名函数会覆盖之前的所有定义,因此所有按钮触发的都是最后一次循环生成的函数,只会返回最后一条数据的size值。
修复方案
把JS函数移到循环外部,点击按钮时直接把对应size作为参数传入函数即可,修改后的代码如下:
<?php foreach ($movie['torrents'] as $torrents): $torrents = get_object_vars($torrents); ?> <!-- 把当前的size作为参数传入调用的方法里 --> <button class="btn btn-primary btn-sm m-2" onclick="addSizeToForm('<?php echo htmlspecialchars($torrents['size']);?>')">Try it</button> <?php endforeach; ?> <input id="file_size" type="text" value="" required> <!-- JS函数只定义一次,放在循环外面 --> <script> function addSizeToForm(size) { document.getElementById("file_size").value = size; } </script>
新增的
htmlspecialchars方法可以处理size值中的特殊字符,避免出现引号冲突、JS语法错误等问题。
内容的提问来源于stack exchange,提问作者Om Prakash
相关产品推荐
相关产品推荐

