Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.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或jQuery获取数组中选定的optgroup和选项_Javascript_Jquery - Fatal编程技术网

如何使用JavaScript或jQuery获取数组中选定的optgroup和选项

如何使用JavaScript或jQuery获取数组中选定的optgroup和选项,javascript,jquery,Javascript,Jquery,如何使用JavaScript或jQuery在数组中获取选定的optgroup和选项。我需要将optgourp和option都放入一个数组中,但只需要选定的数组 <select id="release"> <optgroup label="group1"> <option>option 1</option> <option>option 2</option> </optgr

如何使用JavaScript或jQuery在数组中获取选定的optgroup和选项。我需要将optgourp和option都放入一个数组中,但只需要选定的数组

<select id="release">
    <optgroup label="group1">
        <option>option 1</option>
        <option>option 2</option>
    </optgroup>
    <optgroup label="group2">
        <option>option 3</option>
        <option>option 4</option>
    </optgroup>
</select>
var releasearr = {};
var theSelect = document.getElementById('release');
var optgroups = theSelect.getElementsByTagName('optgroup');
for (var i = 0; i < optgroups.length; i++) {
    releasearr[optgroups[i].getAttribute('label')] = [];
    var options = optgroups[i].getElementsByTagName('option');
    for (var j = 0; j < options.length; j++) {
        releasearr[optgroups[i].getAttribute('label')].push(options[j].innerHTML);
    }
}
console.log(releasearr);
并传递到url='/rbusnp/controller/releasecompresult.php'+requestString

在值中,我得到的releasearr是[object object],没有得到值

我正在使用此下拉菜单的多个选项。但是,当我选择一个opt组和两个选项时,它只返回一个opt组和一个选项,如何获取多个选项的数组。

试试这个

var releasearr = {};
var theSelect = document.getElementById('release');
var optgroups = theSelect.getElementsByTagName('optgroup');
var arr = {};// object for selected options
for (var i = 0; i < optgroups.length; i++) {
    l=optgroups[i].getAttribute('label');
    releasearr[l] = [];
    var options = optgroups[i].getElementsByTagName('option');

    for (var j = 0; j < options.length; j++) {
        releasearr[l].push(options[j].innerHTML);
        if(options[j].selected){ // check if options is selected
            arr[l]= [];// making array of optgroup
            arr[l].push(options[j].innerHTML);
        }
    }
}
console.log(releasearr);
// selected options array
console.log(arr);
更新您应该使用JSON.stringify以字符串形式传递对象

要从optgroup的选定选项中选择所有选项,请尝试以下操作:

var arr= {};
$('#release option:selected').each(function(){
    arr[$(this).closest('optgroup').attr('label')] = $(this).text();
});
console.log(arr);
var arr= {};
$('#release option:selected').each(function(){
    var newArr=[];
    $(this).closest('optgroup').find('option').each(function(){
        newArr.push($(this).text());
    });
    arr[$(this).closest('optgroup').attr('label')] = newArr;
});
console.log(arr);

在Jquery中非常简单:

var $optionSelected = $('option:selected');
var optGroup = $optionSelected.parents('optgroup');

如果您有select元素并使用,效果会更好。查找

感谢您的及时回复。当我提醒消息时,它显示[object]。我如何获得这些值?你能帮忙吗?因为arr是一个对象,所以它不会显示在警报中。你只能在控制台中检查。当我进入php时,结果也是发布的:[object object]]没有获取值显示你正在php中发送arr?显示完整代码。这是js文件中的搜索按钮,发送方式如下var requestString=?re_type=+document.getElementById're_type'。value+&platform=+document.getElementById'platform'。value+&baserelease=+document.getElementById'baserelease'。value+&releasearr+&release_type=+document.getElementById'release_type'。value+&rpd_位=+document.getElementById'rpd_位.value;;url='controller/releasecompresult.php'+requestString;
var arr= {};
$('#release option:selected').each(function(){
    var newArr=[];
    $(this).closest('optgroup').find('option').each(function(){
        newArr.push($(this).text());
    });
    arr[$(this).closest('optgroup').attr('label')] = newArr;
});
console.log(arr);
var $optionSelected = $('option:selected');
var optGroup = $optionSelected.parents('optgroup');