从HTMLCollection到字符串获取值

问题描述 投票:2回答:4

我正在尝试获取多选下拉列表的选定值,并将其转换为单个字符串以供以后操作。目前,我有以下代码:

    function newComic()
			{
				var elem = document.querySelector("#genreList").selectedOptions;
				var arr = [].slice.call(elem);
				var genres = arr.join(', ');
				window.alert(genres);
    }
 <select id="genreList" multiple="multiple" name="addGenre[]"  style="width: 150px;font-size: 10pt;">
					<option value="Action">Action</option>
					<option value="Comedy">Comedy</option>
					<option value="Fantasy">Fantasy</option>
					<option value="Horror">Horror</option>
					<option value="Mystery">Mystery</option>
					<option value="Non-Fiction">Non-Fiction</option>
					<option value="Period">Period</option>
					<option value="Romance">Romance</option>
					<option value="Sci-Fi">Sci-Fi</option>
					<option value="Thriller">Thriller</option>
				</select></p>
                
                <p><input type="button" onclick="newComic()" value="Add Comic" id="btnAddComic" style="font-size: 10pt; width: 150px; height:40px;"></p>
				

警报窗口当前正在输出以下内容:

[[object HTMLOptionElement,object HTMLOptionElement,...]

其中'...'代表任何进一步的假设选择。

[我需要的是将“类型”输出为“动作,浪漫,惊悚”。

提前感谢您的帮助。

javascript html arrays htmlcollection
4个回答
6
投票

join数组时,它正在调用每个元素的“ toString”。在这种情况下,它们是DOM元素并返回其类型。您可以先使用map创建新的字符串数组,其中包含每个选项的map

value

http://jsfiddle.net/Lfx6r5sm/

1
投票

您可以像这样遍历所选项目:

var genres = arr.map(function(el){
    return el.value;
}).join(', ');

0
投票

您需要像这样遍历HTMLCollection

<script type="text/javascript">
function newComic(){
    var elem = document.querySelector("#genreList").selectedOptions;
    var arr = [];
    for(var x=0; x<elem.length; x++){
        // for the TEXT value
        //arr.push(elem[x].text);

        // for the value
        arr.push(elem[x].value);
    }
    var genres = arr.join(', ');
    window.alert(genres);
}
</script>

0
投票

我认为jquery最适合此任务。

HTML

<script>
    function newComic()
    {
       var elem = document.querySelector("#genreList").selectedOptions;
       console.log(elem);
       for (var i = 0; i < elem.length; i++) {
           console.log(elem[i].attributes[0].nodeValue); //second console output
       }
    }
</script>

jQuery

<select id="genreList" multiple="multiple" name="addGenre[]"  style="width: 150px;font-size: 10pt;">
            <option value="Action">Action</option>
            <option value="Comedy">Comedy</option>
            <option value="Fantasy">Fantasy</option>
            <option value="Horror">Horror</option>
            <option value="Mystery">Mystery</option>
            <option value="Non-Fiction">Non-Fiction</option>
            <option value="Period">Period</option>
            <option value="Romance">Romance</option>
            <option value="Sci-Fi">Sci-Fi</option>
            <option value="Thriller">Thriller</option>
</select>

<p><input type="button" value="Add Comic" id="btnAddComic" style="font-size: 10pt; width: 150px; height:40px;"></p>

查看该字段

$("#btnAddComic").click(function(){ var inz = $( "#genreList option:selected" ).map(function(){ return $(this).text(); }).get().join(','); alert(inz); });

© www.soinside.com 2019 - 2024. All rights reserved.