我有一个非常简单的选择下拉列表,其中包含将用户定向到各个页面的网址
<select>
<option value="url1">title1 </option>
<option value="url2">title2 </option>
<option value="url3">title3 </option>
.........
</select>
我将在所有这些(url1,url2,url3 ...)中提供这个用于导航的下拉菜单。是否可以根据我的网址在选择框中设置默认文本?如果我当前在url2上,我在选择框中的默认文本将是title2。我手动知道你可以使用
<option selected="selected" value="url2">title2</option>
但有没有办法可以使用javascript来做,因为我有数百页?所有网址和标题都存储在我可以检索的数组中。
感谢您的帮助!
答案 0 :(得分:1)
你应该能够使用它:
var path = decodeURIComponent(window.location.pathname.replace(/\/$/, ""));
$("option").each(function () {
var url = $(this).val();
if (path.substring(0, url.length) === url) {
$(this).prop('selected', true);
}
});
路径是网址的结尾。下一个代码块循环遍历选项元素,并查看选项值是否与路径匹配,如果匹配,则将selected属性设置为true。
答案 1 :(得分:1)
您可以使用document.URL
获取当前网址,也可以使用文档就绪,
$("#selectId option[value=" + document.URL + "]").prop('selected', true);
但是document.URL
包含完整路径,因此您需要截断不必要的部分,例如http:// https:/,如果它在select value
中不存在。
P.S小提琴只会第二次工作。它是第一次出现不同的URL。要成为一个JSFiddle个人的东西。
答案 2 :(得分:1)
假设您要将窗口位置中的网址(例如http://www.example.com/some/page.html
)与您在下拉列表中找到的网页的网址相匹配:
var dropdown = document.getElementById( 'dropdown' );
for ( var i = 0; i < dropdown.childElementCount; ++i ) {
if ( dropdown.children[i].value === document.location.href) {
dropdown.selectedIndex = i;
break;
}
}
'dropdown'
包含<select>
元素的ID。 Jsfiddle:http://jsfiddle.net/RhZy6/
答案 3 :(得分:0)
说你有
<form name="MyForm">
<select name="SelectBox1">
<option>One
<option>Two
<option>Three
</select>
..等..其余表格/页面..
然后在你的javascript代码..
var el=document.forms.MyForm.SelectBox1;
el.selectedIndex=2; // sets option to "Three" in Select box, because first option is number 0, second =1, third = 2 etc
或者将它设置为一个值使用这样的函数..传入选择字段名称及其应该是的值
function setSelect(sFieldName, sValue) {
var el=document.getElementsByName(sFieldName)[0] // returns array of all elements with that name so use [0] to get 1st one
for (var i=0;i<el.options.length;
if (el.options[i].value == sValue) { // if they match...
el.selectedIndex=i; // then this should be the default
}
}
称之为
之类的东西setSelect("SelectBox1","http://ectetc")