【发布时间】:2018-05-09 00:25:55
【问题描述】:
2 个问题,我有一个列出 3 个位置的表格。提交表单后,我希望变量“event_location”等于在下拉菜单中选择的任何位置。我唯一不明白的是,如果用户根本没有选择位置,即用户只使用默认位置(显示的第一个位置)怎么办。我不认为我的 javascript 代码说明了这一点。下面我已经包含了 html 和 javascript。
<select name="location" id="event_location" onchange='getSelectedValue();'>
<option value="sandiego">San Diego</option>
<option value="losangeles">Los Angeles</option>
<option value="sanfrancisco">San Francisco</option>
</select>
function getSelectedValue() {
var event_location = document.getElementById('event_location').value;
}
函数 getSelectedValue() 仅在触发 'onchange' 事件时发生。因此,如果他们对 San Diego 作为他们的第一选择感到满意,他们将不会触发 onchange 事件。我应该只在函数之外声明 event_location = 'sandiego' 吗?
另一个棘手的部分是基于他们选择的 event_location(圣地亚哥、洛杉矶或旧金山),我的 javascript 会更改他们被定向到的 URL。如何更改 URL 以说明他们选择的 event_location。例如,如果他们选择了圣地亚哥,一旦他们点击搜索按钮,就会将他们带到:http://myurl.com/sandiego。这是迄今为止我的第二个函数的 html 和 javascript:
<input type='button' value='Search' onclick='eventViewer();' />
function eventViewer() {
function getSelectedValue() {
var event_location = document.getElementById('event_location').value;
}
if (event_location = 'losangeles') {
window.open( 'http://...' )
}
else if (event_location = 'sanfrancisco') {
window.open( 'http://...' )
}
else {
window.open( 'http://...' ) //link to san diego
}
}
您可以使用标准从下拉框中获取值,而不是创建 2 个单独的函数
var event_location = document.getElementById('event_location').value;
这将获取下拉菜单中的任何值。因此,您不必担心具有 2 个不同函数的变量范围,您可以在 1 个“OnClick”事件中声明所有变量。
【问题讨论】:
-
你为什么不添加一个虚拟选项 None 作为第一个选项,所以当用户没有选择任何东西时,他不会去任何地方?
-
那么像一个空白字段?可用性方面,您认为这是最佳选择吗?
-
为什么你认为你需要一个嵌套函数?
-
是的,这是一种常见的做法,您可以确定用户已经查看了选项并选择了一个。否则,无法决定用户是忘记选择选项还是因为他想选择默认值而没有做任何事情
-
考虑到范围,如果我将它们作为 2 个单独的函数,则该变量将仅适用于该函数。我对javascript很陌生=/