Javascript 尝试使用用户输入在元素之间组织值
这是我的第一篇文章。我正在开发一个webapp,它将在五个元素之间对五个不同的值进行排序,但我不确定如何最好地进行排序 有五个选择框元素,它们之间共享五个值。我将它们称为元素1-5和值A-E。目标是使每个值在所有五个元素之间只使用一次。因此,如果我有: 1=A,2=B,3=C,用户将元素2中的值从B更改为A,元素1需要更改为B,以便每个值只显示一次 我目前的想法是尝试使用单个函数,通过onchange从每个元素触发,从触发元素获取新值,然后找到具有相同值的另一个元素,并更新它以使用未使用的值。每个选择框如下所示:Javascript 尝试使用用户输入在元素之间组织值,javascript,jquery,html,Javascript,Jquery,Html,这是我的第一篇文章。我正在开发一个webapp,它将在五个元素之间对五个不同的值进行排序,但我不确定如何最好地进行排序 有五个选择框元素,它们之间共享五个值。我将它们称为元素1-5和值A-E。目标是使每个值在所有五个元素之间只使用一次。因此,如果我有: 1=A,2=B,3=C,用户将元素2中的值从B更改为A,元素1需要更改为B,以便每个值只显示一次 我目前的想法是尝试使用单个函数,通过onchange从每个元素触发,从触发元素获取新值,然后找到具有相同值的另一个元素,并更新它以使用未使用的值。每
<select id="1" onchange="updateElements(this);">
function updateElements(trigger)
{
var new_value = document.getElementById('trigger').value;
// here we check all the elements minus the trigger to find one
// with a value that matches new_value, but how? Then we go to...
// here where we compare all of the values of the elements against
// the list of all values to determine which one isn't being used
// finally we set the element that had the matching value to use
// the unused value
document.getElementById('matchingelement').value = 'unused_value';
}
我被卡住了,因为我不知道如何检查所有元素以找到一个匹配的值,也不知道如何比较使用的值以确定哪一个是未使用的
有什么想法吗?另外,如果我完全走错了方向,请随时告诉我。首先,不要使用内嵌JS单击处理程序,除非您必须:
$('#1').change(function() {...}
然后,如果使用jQuery,请使用jQuery:
function updateElements(trigger) {
var new_value = $('#trigger').value;
...
$('#matchingelement').value = 'unused_value';
}
我认为你的思路是对的。我会使用类似这样的方法来获取每个select的值:
$('select').change(function() {
var my_val = $(this).val();
$('select').each(function() {
if ( $(this).val() == my_val ) {
$(this).val( unused_val );
return
}
});
});
你需要一些条件 抓住你的价值观
var elem1 = document.getElementById("1");
var elem2 = document.getElementById("2");
等等
然后交叉检查您的元素
if(elem1 = "a")
{
elem2.value="blah";
}else{change elements accordingly}
您也可以检查null
如果您想要一些下拉值检查的真实示例,我可以上传它们,我假设您使用的是jQuery,因为它是您的问题标签之一
var previous_value;
$('select').focus(function(e) {
previous_value = $(this).val();
}).change(function(e) {
var new_value = $(this).val();
$('select:contains(' + new_value + ')').not($(this)).val(previous_value);
});
我想到了这样的事情。一旦聚焦选定元素,其当前值将保存在变量previous\u value
中。更改时,其新值将保存到new\u value
。同时,它将包含新文本的select元素的值设置为上一个值。此外,它还会仔细检查所选元素是否不是此元素
我想这就是你想要的。更新了更多细节。你的逻辑比我的更完整。美好的