繁体   English   中英

选择一个下拉菜单,更改JS值并重新加载页面

[英]Select a Dropdown, Change the JS Value and Reload the Page

我正在尝试编写一个脚本,当我从下拉框中选择一个选项时,它将执行以下操作:

  1. 根据此选项更改“ var pick_”的值;
  2. 重新加载页面;
  3. 保持下拉菜单和“ var pick_”中的选定选项。

如何使用Javascript做到这一点? 我已经在这里这里调查 ,但是重新加载页面后,选择选项没有得到维护。

这是我的脚本:

var pick_ = 1

<select id = "selectX" onchange = "getSelectValue('selectX');">
     <option>1</option>
     <option>2</option>
     <option>3</option>
     <option>4</option>
     <option>5</option>
</select>

function getSelectValue(selectID){
     pick_ = document.getElementById(selectID).value;
     location.reload(); 
}

谢谢

您可以使用本地存储或cookie或任何服务器端存储某个位置(如果要保留变量数据)。

var pick_ = 1

<select id = "selectX" onchange = "getSelectValue('selectX');">
     <option>1</option>
     <option>2</option>
     <option>3</option>
     <option>4</option>
     <option>5</option>
</select>

function getSelectValue(selectID){
     pick_ = document.getElementById(selectID).value;
     localStorage.pick_ =pick_ 
     pick_ = localStorage.getItem("pick_");
     location.reload(); 
}

希望这项工作对您有用。

这实际上与苏丹汗的答案使用的是相同的技术,但是您需要在重新加载后检索该值。

window.addEventListener('load', function(){
    if (localStorage.pick) {
        var sel = document.querySelector('#selectX');
        sel.value = localStorage.pick;
    }
});

function getSelectValue(){
    var sel = document.querySelector('#selectX');
    localStorage.pick = sel.value;
    location.reload();
}

然后在您的HTML中

<select id = "selectX" onchange = "getSelectValue();">
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>
</select>

您必须将下拉菜单的值保存到一些全球可用的位置,例如Cookie或本地存储。

注意:此代码段不在此处运行,但可以正常运行。

 function getSelectValue(selectID){ pick_ = document.getElementById('selectX').value; localStorage.setItem("lastSelectedValue", pick_); location.reload(); } function getLastSelectedValue(){ var value = localStorage.getItem("lastSelectedValue") if(value ) { document.getElementById('selectX').value = value ; } } 
 <html> <body onload = 'getLastSelectedValue()'> <select id = "selectX" onchange = "getSelectValue('selectX');"> <option>option 1</option> <option>option 2</option> <option>option 3</option> <option>option 4</option> <option>option 5</option> </select> </body> </html> 

最简短的答案是使用cookie。

function getSelectValue(selectID){
    pick_ = document.getElementById(selectID).value;
    document.cookie = "pick="+pick_;
    location.reload(); 
}

下次重新加载页面时,检查cookie名称“ pick”(如果存在),选择其值,否则选择“ default”(默认)

如果需要重新加载页面,则可以在URL中设置参数。 然后,您可以获取参数。 还有很多其他方法可以做到这一点,我怀疑是否有理由以任何方式存储它。

为此,我做了以下工作:

  1. 给选项一个值。
  2. 创建一个函数来设置URL setSelectValue(key, value)
  3. 创建一个函数以在重新加载页面时获取此值getParameter(name, url)
  4. 那您就享受吧!

     <select id = "selectX" onchange="setSelectValue('id', this.value);"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <script> var pick_ = getParameter("id"); var selectedOption = document.getElementById("selectX"); selectedOption.options[(pick_ - 1)].setAttribute("selected", "selected"); function setSelectValue(key, value) {//We can set a Parameter in our URL like this key = encodeURI(key); value = encodeURI(value); var kvp = document.location.search.substr(1).split('&'); var i = kvp.length; var x; while (i--)// { x = kvp[i].split('='); if (x[0] === key) { x[1] = value; kvp[i] = x.join('='); break; } } if (i < 0) { kvp[kvp.length] = [key, value].join('='); } document.location.search = kvp.join('&'); } function getParameter(name, url) {//We can then return the URL like this if (!url) url = window.location.href; name = name.replace(/[\\[\\]]/g, "\\\\$&"); var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), results = regex.exec(url); if (!results) return 1;//if no parameters return the first option if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\\+/g, " ")); } </script> 

我希望这可以按照您的要求进行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM