在我的代码中,链接的onclick事件选择一个下拉选项:
<html>
<head>
<script src="https://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(document).on("click", "#aaa", function(){
$("select").val("aaa").change();
});
});
</script>
<script type="text/javascript">
$(document).ready(function(){
$(document).on("click", "#bbb", function(){
$("select").val("bbb").change();
});
});
</script>
<script type="text/javascript">
$(document).ready(function(){
$(document).on("click", "#ccc", function(){
$("select").val("ccc").change();
});
});
</script>
</head>
<body>
<p><a id="aaa">Select Option 1</a></p>
<p><a id="bbb">Select Option 2</a></p>
<p><a id="ccc">Select Option 3</a></p>
<select>
<option>Select</option>
<option value="aaa">Option 1</option>
<option value="bbb">Option 2</option>
<option value="ccc">Option 3</option>
</select>
</body>
</html>
问题:
我正在尝试添加一个指向外部页面的链接,该链接使用上述代码导航到该页面并自动选择,例如选项 2
从某种意义上说,我正在尝试执行例如以下函数
function() $("select").val("bbb").change();});
当单击首先导航到函数页面的特定(外部(链接时。
某种参数发送到该页面可以读取的第二页。最简单的方法是将查询字符串添加到链接上,如下所示:
<a href="http://www.someDomain.com/page2.html?option=2">Page 2</a>
然后在"page2.html"上,您需要读取查询字符串并采取相应的操作:
// This is the code that would be on page2.html
document.addEventListener("DOMContentLoaded", function(){
// Assume that the current page was arrived at with the URL: http://someDomain.com/page2.html?option=2
// That is the string that will be in window.location.href
//var theQueryString = window.location.href;
// For testing purposes we'll use it as a variable:
var theQueryString = "http://someDomain.com/page2.html?option=2".split("?")[1];
var optionNumber = theQueryString.split("=")[1];
console.log(theQueryString, optionNumber);
if(optionNumber === "2"){
// You can do whatever you need to do now that you know what the parameter
// was that was passed from the first page:
document.getElementById("foo").selectedIndex = optionNumber - 1;
doSomethingAwesome();
}
function doSomethingAwesome(){ alert("You Did It!"); }
});
<select id="foo">
<option>One</option>
<option>Two</option>
<option>Three</option>
<option>Four</option>
</select>
有很多不同的方法可以解决这个问题。推荐的方法假设您可以访问/控制此页面的后端服务器,当传递某个 URL 参数时,您可以在模型中加载一些变量(即 ?selection=2
(,当该变量在模型中预设时,您可以在select
元素上设置default
参数。
但是,如果您只能控制前端,则可以使用document.location
检查URL参数或哈希,然后从那里做出决定。
例如,使外部页面上的链接类似于 http://www.myurl.com/mypage#option2
。然后在 <script>
标记中,可以检查值option2
document.location.hash
,然后调用相应的 jQuery 函数来更改select
元素。