使用 jquery mobile 从选择选项中获取“未定义”值

Getting 'undefined' value from select options using jquery mobile

提问人:Endless Infinity 提问时间:1/3/2022 更新时间:1/3/2022 访问量:818

问:

我试图从我在列表中选择的任何选项中获取选定的值。但是,它提到“未定义”

<fieldset data-role="controlgroup">
                    <legend>Select Pizza Flavor </legend>
                    <select name="flavorlist" id="flavorlist" onclick="total()">
                        <option value= "">-Select Flavor-</option>
                        <option value="6">Cheezy Chicken (RM6)</option>
                        <option value="6">Spicy Chicken (RM6)</option>
                        <option value="5">Hawaii (RM5)</option>
                        <option value="6">Peperroni (RM6)</option>
                        <option value="5">Seafood (RM5)</option>
                        <option value="5">Beef (RM5)</option>
                    </select>
                </fieldset>

JavaScript的

function flavorprice()
{
    var flavorprice = 0
    
    var list = document.getElementsByName("flavorlist");

    flavorprice = list.value;
    
    return flavorprice;
}

我试过了

function flavorprice()
{
    var flavorprice = 0
    
    var list = document.getElementsByName("flavorlist");

    flavorprice = list.options[list.selectedIndex].value;
    
    return flavorprice;
}

仍然没有价值。如何解决这个问题? 我正在学习jquery mobile。 我还没有习惯 $,因为我对这个主题真的很陌生。

jquery jquery -移动

评论


答:

0赞 Rory McCrossan 1/3/2022 #1

问题是因为返回的是 NodeList,而不是 Element。因此,该属性是未定义的。getElementsByName()value

要解决眼前的问题,您可以改为通过其 来选择元素,因为这在 DOM 中应该是唯一的,并且只会返回一个元素:id

function flavorprice() {
  return document.getElementById("flavorlist").value || 0;
}

但是请注意,当您使用 jQuery mobile 时,您可以使用 jQuery 方法来实现相同的目的:

function flavorprice() {
  return $('#flavorlist').val() || 0;
}

// ES6 version of the above:
let flavorprice = () => $('#flavorlist').val() || 0;