【发布时间】:2020-02-13 13:52:24
【问题描述】:
我正在通过覆盖 cart-shipping.php 文件 (WooCommerce) 来使用 WordPress。用选项填充选择后:
<?php
if (strpos($chosen_method, 'pickup_') !== false) {
printf('<li><select name="select" id="method_pickups" onchange="handlePickup()">');
foreach ($select as $key => $value) {
printf('<option value="'.$key.'">'.$value.'</option>');
}
printf('</select></li>');
}
?>
我想通过使用这样的javascript将一个存储在会话存储中来设置选定的值:
document.addEventListener('DOMContentLoaded', () => {
const method_pickups = document.querySelector('#method_pickups');
method_pickups.value = sessionStorage.getItem('method_pickups_soda');
handlePickup();
});
const handlePickup = () => {
const method_pickups = document.querySelector('#method_pickups');
const billing_pickups = document.querySelector('#billing_pickups');
sessionStorage.setItem('method_pickups_soda', method_pickups.value);
if (!window.location.href.includes('carrito')) {
billing_pickups.value = method_pickups.value;
const index = method_pickups.selectedIndex;
const display = document.querySelector('#display_pickup');
display.value = method_pickups.options[index].text;
}
};
问题在于,即使它的值被更改(导致简单的console.log() 显示新值),它在视觉上也是相同的选项。这是怎么回事?
在此先感谢,并为我的英语不好感到抱歉。
【问题讨论】:
-
但它得到了价值。如果我记录
method_pickups_soda的值,它会显示存储的内容。该代码甚至更改了选择的值。现在唯一不起作用的是视觉部分。即使值不同,它仍然使用旧选项。 -
@Pointy 我刚刚将我的
handlePickup()函数添加到问题中。 -
好的对不起,我看错了代码;我会删除我之前的评论。
-
不用说,这应该并且确实有效:jsfiddle.net/khrismuc/h7rfsekz 我们需要查看最终代码,而不是 PHP 源代码,我们需要查看您尝试设置的值。调试的第一个顺序是在任何地方放置
console.log()命令,以确保 a) 您的代码被调用 b) 变量包含您认为它们包含的内容 -
这是问题的一部分。我创建了一个代码,只有一个带有一些选项的选择,通过使用相同的代码更改了值,它工作得很好。我认为这是一个与 wordpress 相关的问题,但我看不到发生了什么。
标签: javascript php wordpress woocommerce