select标签中的location.hash

时间:2011-07-28 16:08:39

标签: javascript select hash onchange

我创建了一个页面,其中包含按意大利省份分类的地址列表 在页面顶部,我有一个 <select> 标记,其中包含所有省份<option>的列表,我已为此<select>分配了 onChange 事件为每个省生成不同的URL。

<form class="form" action="java-script:update();">  
        <select name="cities" id="cities" onchange = "update(); location.hash = '?id=' + this.value">  
                 <option value = "Bologna">Bologna</option>  
                 <option value = "Milano">Milano</option>  
                 <option value = "Roma">Roma</option> 
        </select> 
</form>


我的问题是:

例如,如果我复制其他省份的链接(例如http://mywebsite.it/page.html#?id=Roma)并打开一个新标签并将其粘贴到地址栏中,我提交,总是提醒我在第一个上的位置选项(在这种情况下,博洛尼亚)。 为什么?

谢谢!抱歉我的英语不好。

1 个答案:

答案 0 :(得分:0)

您根本不设置所选选项,只需在用户更改所选选项时更改哈希值。没有什么花哨的事情发生,因为你没有重用哈希。

例如,如果要在页面加载时选择当前选项,则需要执行一些JavaScript:

<script>
window.onload = function() {
    var city = location.hash.substring(5); // strip the #?id=
    var elem = document.getElementById('cities');
    for(var i = 0 ; i < elem.options.length; i++) {
        if(elem.options[i].value == city) {
            elem.selectedIndex = i;
            break;
        }
    }
};
</script>

另外,要在网址中使用JavaScript,请使用javascript:,而不是java-script:

http://jsfiddle.net/Ez8dY/1/(选择一个城市,然后重新加载框架)