如何在下拉列表中的搜索栏 select 选项中添加 href?
How to make a href appended in search bar select option in dropdown?
我建立了一个单页网站,按部分划分,每个部分都有 ID。我的客户希望能够使用搜索栏中的 href(#'s)导航到每个部分,例如
www.website#gohere
对于我的部分,这很有效。我的问题是他们只是扔了一个曲线球,我不知道该怎么做 -
在我的页面的某个名为 #labSearch 的部分中,我有一个下拉菜单,该下拉菜单是使用 jQuery 从 csv 文件填充的:
var location = arrayOfEvents[i][0];
if (location != prevLoc)
{
select.innerHTML += "<option id = "+"test" +" value=\"" + location + "\">" + location + "</option>";
}
selected 下拉选项时,某些 div 会根据下拉菜单的值显示。他们需要它,以便说下拉选项是达拉斯,当他们去的时候:
website.com#Dallas
它将他们带到带有 dropdwin 的部分(这是 #labSearch),就像用户已经 selected Dallas 选项一样,这意味着显示正确的 div。正如您在上面看到的那样,我已尝试提供选项 ID,但这没有任何作用。
如何在搜索栏 select 中为某个下拉选项创建一个 href?这可能吗?
为什么选项 ID 不起作用?
这是我在 labSearch 部分的下拉代码:
<form id="locationForm" style = "width: 70%; margin: auto; padding-bottom: 30px;">
<select class = "form-control" id="selectNumber" style = "">
<option>Choose a location</option>
</select>
</form>
编辑:好的,在我的 javascript 文件准备好或任何我有的东西结束时:
var selectHashOption = function () {
console.log("hash changed");
var select1 = document.getElementById('selectNumber');
var parts = location.href.split('#');
if (parts.length > 1) {
var hash = parts[1]; // Get the hash part of the URL
console.log("HASH="+hash);
select1.value = hash; // Select the option in the dropdown list
//select1.onchange();
dropdownChange();
// Trigger the onchange event handler
}
};
window.onhashchange = selectHashOption;
});
</script>
这一切都很好,除了我无法调用 dropdownChange - 我知道它是未定义的,但是我已经在文件范围内声明了变量:
<script>
var dropdownChange;
然后在文档中设置就绪:
$(".form-control").change(function () {
dropdownChange = function()
{
//stuff
这在此处进行了解释 Why can I not define functions in jQuery's document.ready()?,我照他们做的做了。这是在我的哈希更改 window 之前。我什至不能调用 onchange
因为它也是未定义的。我能做什么?
编辑 2:
我现在在范围级别声明了我的函数,然后在此处设置:
dropdownChange = function () {
}
$(".form-control").change(dropdownChange);
在我尝试后的哈希值中:
if (parts.length > 1) {
var hash = parts[1]; // Get the hash part of the URL
console.log("HASH="+hash);
select1.value = hash; // Select the option in the dropdown list
select1.onchange();
}
同样这个函数是未定义的。然后我直接调用函数:
if (parts.length > 1) {
var hash = parts[1]; // Get the hash part of the URL
console.log("HASH="+hash);
select1.value = hash; // Select the option in the dropdown list
dropdownChange();
}
并且函数被调用但是值 (I console.log(this.value)
) 在这里未定义 -
您可以通过设置下拉列表的 value
属性来 select 一个选项。我假设选项值与用户输入的 URL 的散列部分相匹配。
对于此 HTML 标记:
<select id="select1">
<option value="Dallas">Dallas</option>
<option value="New York">New York</option>
<option value="Los Angeles">Los Angeles</option>
<option value="Chicago">Chicago</option>
</select>
您可以 select 使用此代码匹配 URL 的散列部分的选项:
var selectHashOption = function () {
var select1 = document.getElementById('select1');
var parts = location.href.split('#');
if (parts.length > 1) {
var hash = parts[1]; // Get the hash part of the URL
select1.value = hash; // Select the option in the dropdown list
select1.onchange(); // Trigger the onchange event handler
}
};
window.onhashchange = selectHashOption;
选项被 select 编辑后,我调用 onchange
来触发下拉列表的事件处理程序。根据事件处理程序的设置方式,您可能需要以不同的方式进行操作,如 How can I trigger an onchange event manually?.
中所述
我需要监视 onhashchange
事件以使其在我的测试代码中运行,正如您在代码示例的最后一行中看到的那样。
我建立了一个单页网站,按部分划分,每个部分都有 ID。我的客户希望能够使用搜索栏中的 href(#'s)导航到每个部分,例如
www.website#gohere
对于我的部分,这很有效。我的问题是他们只是扔了一个曲线球,我不知道该怎么做 -
在我的页面的某个名为 #labSearch 的部分中,我有一个下拉菜单,该下拉菜单是使用 jQuery 从 csv 文件填充的:
var location = arrayOfEvents[i][0];
if (location != prevLoc)
{
select.innerHTML += "<option id = "+"test" +" value=\"" + location + "\">" + location + "</option>";
}
selected 下拉选项时,某些 div 会根据下拉菜单的值显示。他们需要它,以便说下拉选项是达拉斯,当他们去的时候:
website.com#Dallas
它将他们带到带有 dropdwin 的部分(这是 #labSearch),就像用户已经 selected Dallas 选项一样,这意味着显示正确的 div。正如您在上面看到的那样,我已尝试提供选项 ID,但这没有任何作用。
如何在搜索栏 select 中为某个下拉选项创建一个 href?这可能吗?
为什么选项 ID 不起作用?
这是我在 labSearch 部分的下拉代码:
<form id="locationForm" style = "width: 70%; margin: auto; padding-bottom: 30px;">
<select class = "form-control" id="selectNumber" style = "">
<option>Choose a location</option>
</select>
</form>
编辑:好的,在我的 javascript 文件准备好或任何我有的东西结束时:
var selectHashOption = function () {
console.log("hash changed");
var select1 = document.getElementById('selectNumber');
var parts = location.href.split('#');
if (parts.length > 1) {
var hash = parts[1]; // Get the hash part of the URL
console.log("HASH="+hash);
select1.value = hash; // Select the option in the dropdown list
//select1.onchange();
dropdownChange();
// Trigger the onchange event handler
}
};
window.onhashchange = selectHashOption;
});
</script>
这一切都很好,除了我无法调用 dropdownChange - 我知道它是未定义的,但是我已经在文件范围内声明了变量:
<script>
var dropdownChange;
然后在文档中设置就绪:
$(".form-control").change(function () {
dropdownChange = function()
{
//stuff
这在此处进行了解释 Why can I not define functions in jQuery's document.ready()?,我照他们做的做了。这是在我的哈希更改 window 之前。我什至不能调用 onchange
因为它也是未定义的。我能做什么?
编辑 2:
我现在在范围级别声明了我的函数,然后在此处设置:
dropdownChange = function () {
}
$(".form-control").change(dropdownChange);
在我尝试后的哈希值中:
if (parts.length > 1) {
var hash = parts[1]; // Get the hash part of the URL
console.log("HASH="+hash);
select1.value = hash; // Select the option in the dropdown list
select1.onchange();
}
同样这个函数是未定义的。然后我直接调用函数:
if (parts.length > 1) {
var hash = parts[1]; // Get the hash part of the URL
console.log("HASH="+hash);
select1.value = hash; // Select the option in the dropdown list
dropdownChange();
}
并且函数被调用但是值 (I console.log(this.value)
) 在这里未定义 -
您可以通过设置下拉列表的 value
属性来 select 一个选项。我假设选项值与用户输入的 URL 的散列部分相匹配。
对于此 HTML 标记:
<select id="select1">
<option value="Dallas">Dallas</option>
<option value="New York">New York</option>
<option value="Los Angeles">Los Angeles</option>
<option value="Chicago">Chicago</option>
</select>
您可以 select 使用此代码匹配 URL 的散列部分的选项:
var selectHashOption = function () {
var select1 = document.getElementById('select1');
var parts = location.href.split('#');
if (parts.length > 1) {
var hash = parts[1]; // Get the hash part of the URL
select1.value = hash; // Select the option in the dropdown list
select1.onchange(); // Trigger the onchange event handler
}
};
window.onhashchange = selectHashOption;
选项被 select 编辑后,我调用 onchange
来触发下拉列表的事件处理程序。根据事件处理程序的设置方式,您可能需要以不同的方式进行操作,如 How can I trigger an onchange event manually?.
我需要监视 onhashchange
事件以使其在我的测试代码中运行,正如您在代码示例的最后一行中看到的那样。