Javascript 尝试使用用户输入在元素之间组织值

Javascript 尝试使用用户输入在元素之间组织值,javascript,jquery,html,Javascript,Jquery,Html,这是我的第一篇文章。我正在开发一个webapp,它将在五个元素之间对五个不同的值进行排序,但我不确定如何最好地进行排序 有五个选择框元素,它们之间共享五个值。我将它们称为元素1-5和值A-E。目标是使每个值在所有五个元素之间只使用一次。因此,如果我有: 1=A,2=B,3=C,用户将元素2中的值从B更改为A,元素1需要更改为B,以便每个值只显示一次 我目前的想法是尝试使用单个函数,通过onchange从每个元素触发,从触发元素获取新值,然后找到具有相同值的另一个元素,并更新它以使用未使用的值。每

这是我的第一篇文章。我正在开发一个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元素的值设置为上一个值。此外,它还会仔细检查所选元素是否不是此元素


我想这就是你想要的。

更新了更多细节。你的逻辑比我的更完整。美好的