Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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_Jquery - Fatal编程技术网

Javascript 选择框选项不显示选定项

Javascript 选择框选项不显示选定项,javascript,jquery,Javascript,Jquery,我正在尝试将一个选择框项目复制或移动到另一个选择框。问题是,当一个或多个项目从第一个框移动到第二个框时,应将其选中。但它不起作用 我的代码 function SelectMoveRows(SS1,SS2) { var SelID=''; var SelText=''; var SelText2=''; // Move rows from SS1 to SS2 from bottom to top for (i=SS1.options.length -

我正在尝试将一个选择框项目复制或移动到另一个选择框。问题是,当一个或多个项目从第一个框移动到第二个框时,应将其选中。但它不起作用

我的代码

function SelectMoveRows(SS1,SS2)
{


    var SelID='';
    var SelText='';
    var SelText2='';
    // Move rows from SS1 to SS2 from bottom to top
    for (i=SS1.options.length - 1; i>=0; i--)
    {
        if (SS1.options[i].selected == true)
        {
            SelID=SS1.options[i].value;
            SelText=SS1.options[i].text;
            SelText2=SS1.options[i].attr("selected");

            var newRow = new Option(SelText,SelID,SelText2);
            SS2.options[SS2.length]=newRow;
            SS1.options[i]=null;
        }
    }
    SelectSort(SS2);
}
然后我用

   SelText2=SS1.options[i].attr("selected");
但它不起作用。如果我使用:

SelText2=SS1.options[i].select=true;
然后选项看起来像:

<option value="3" selected="">Delivery</option>
但它应该是:

<option value="3" selected="selected">Delivery</option>

在选项标记中,所选属性不需要值:

<option value="3" selected>Delivery</option>

<option value="3" selected="selected">Delivery</option>
请在此处查看:


您应该使用.prop而不是.attr

e、 g

供参考:

更新:我将按照以下方式进行操作:

<select id="select1">
    <option value="1">Option1</option>
    <option value="2">Option2</option>
</select>

<select id="select2">
    <option value="3">Option3</option>
</select>

$("#select1").change(function(){
    $("#select1 option:selected").each(function() {
        var option = $(this);
        $("#select2").append(option);
        $("#select1").remove(option);
    });
});

这将在选择时将所选选项从Select 1切换到Select 2。

正如David Thomas在评论中指出的那样,.attr不是Select元素的有效方法;它是jQuery对象上的一个方法,而您没有

您可以将true作为参数传递给选项构造函数,第三个参数实际上是defaultSelected属性,而第四个参数是selected属性

for (var i = SS1.options.length - 1; i >= 0; i--) {
    var option = SS1.options[i];
    if (option.selected) {
        SS2.add(new Option(option.text, option.value, false, true));
        SS1.remove(i);
    }
}
您可以使用option.selected而不是true,但由于if语句,您知道option.selected将始终为true


把你的代码弄得乱七八糟。。。。SelText2=SS1.options[i].attrselected;为什么会这样?您试图使用jQuery方法attr'selected',这是一个getter,它检索属性的值,并将其链接到一个DOM节点,该节点无论如何都无法访问jQuery方法。您是否查看了浏览器的JavaScript控制台,如果没有,请按“F12”?与此JavaScript一起使用的相关HTML是什么?如果您看起来没有使用jQuery,那么最好删除该标记,除非您在其他地方使用它,并且欢迎使用jQuery解决方案。为什么?任何引用?SS1.options[i]都不是jquery对象
for (var i = SS1.options.length - 1; i >= 0; i--) {
    var option = SS1.options[i];
    if (option.selected) {
        SS2.add(new Option(option.text, option.value, false, true));
        SS1.remove(i);
    }
}