Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 创建两个共同相关的元素_Javascript_Html_Html Select - Fatal编程技术网

Javascript 创建两个共同相关的元素

Javascript 创建两个共同相关的元素,javascript,html,html-select,Javascript,Html,Html Select,注意,这个问题绝对不是关于级联选择的。我知道怎么做。请在标记为重复之前阅读,您将看到这不是级联,而是相互依赖 我正在写一个表单,其中包括按年度过滤搜索结果。我为此使用了两个下拉选择框,其中ID为from和to。应用程序的逻辑显然需要to值>=from值。我希望这能反映在表示层中。也就是说,如果我在“发件人”下拉列表中选择了1998,那么我只能在“收件人”下拉列表中选择大于1998的选项,反之亦然 我已经实现了一个最简单的例子,如下所示。如果用户选择from选项,然后选择to选项,然后继续,则此解

注意,这个问题绝对不是关于级联选择的。我知道怎么做。请在标记为重复之前阅读,您将看到这不是级联,而是相互依赖

我正在写一个表单,其中包括按年度过滤搜索结果。我为此使用了两个下拉选择框,其中ID为from和to。应用程序的逻辑显然需要to值>=from值。我希望这能反映在表示层中。也就是说,如果我在“发件人”下拉列表中选择了1998,那么我只能在“收件人”下拉列表中选择大于1998的选项,反之亦然

我已经实现了一个最简单的例子,如下所示。如果用户选择from选项,然后选择to选项,然后继续,则此解决方案效果良好。但是,如果用户不断地来回更改,那么问题就会开始出现。这样做的原因是,每当其他select更改时,我会重新设置select的所有选项的HTML。但这也有重置默认值的效果

例如,如果我在下面的示例中从中选择3,然后从中选择5,然后返回并从中选择2,则“收件人”框将重置为2,即使5是一个有效的选择

我的问题是,有没有比使用.innerHTML和重置整个选项列表更好的方法呢?或者,如果默认值仍然有效,我是否需要手动将其恢复到原来的状态

我希望这有点清楚。我是新到前端的,抱歉。代码如下:

函数更新对象{ var to=document.getElementByIdto; updateto,e.value,6; } 函数更新组{ var from=document.getElementByIdfrom; updatefrom,1,e.值; } 函数updateelmnt、beginValue、endValue{ 选择=
对于var i=beginValue;i请尝试以下代码段-代码本身就说明了这一点:

//重新编写选项 const updateOptionElements=elt、low、high、selected=null=>{ elt.innerHTML=; 因为let i=低;i{ toSelected=+evt.target.value; 将选项元素从,更新为Selected+1,10,从Selected; } from.onchange=evt=>{ fromSelected=+evt.target.value; 将选项元素更新为0,从选定项更新为选定项; }
请尝试此代码段-代码本身就说明了问题:

//重新编写选项 const updateOptionElements=elt、low、high、selected=null=>{ elt.innerHTML=; 因为let i=低;i{ toSelected=+evt.target.value; 将选项元素从,更新为Selected+1,10,从Selected; } from.onchange=evt=>{ fromSelected=+evt.target.value; 将选项元素更新为0,从选定项更新为选定项; }
只需将之前选择的值设置为temp变量值,然后再次将其设置为select after innerHTML

函数更新对象{ var to=document.getElementByIdto; var值=to.value; updateto,e.value,6; to.value=值对于var i=beginValue;i只需将先前选择的值设置为temp变量值,然后再次将其设置为select after innerHTML

函数更新对象{ var to=document.getElementByIdto; var值=to.value; updateto,e.value,6; to.value=值对于var i=beginValue;我可能是的副本。此外,在上面的标记中有明显的错误…不要告诉我这是有效的HTML。但是,严肃地说,不符合标准并不意味着任何合理的定义都会有明显的错误。我在第一个版本中有更多的样板文件,一位版主建议编辑以保持它的完整性ore minimal,这是完全有意义的,因为它确实运行并清楚地说明了问题。停止控制。是的,如果替换所有可能的重复项,则需要重置值或选择。此外,上面的标记中存在明显错误…不要告诉我这是有效的HTML。不过,严肃地说,不符合标准不会导致错误任何合理的定义都是明显的错误。我在第一个版本中有更多的样板文件,一位版主建议编辑使其保持最小,这是完全有意义的,因为它确实运行并清楚地说明了问题。停止拖拉。是的,如果您替换了所有的sThank,您需要重置值或选择。您需要为您的答案赢。Both这个答案和尼诺的答案,我认为,都是足够的答案。我会接受他的答案,因为这是第一个答案,但比你的答案高。@Neil谢谢你,你真是太好了谢谢你的回答。我想,这个答案和尼诺的答案都是足够的。我会接受他的答案,因为
是第一名,但比你高。@Neil谢谢你,你真是太好了