获取 Select Option 中 Span 类的值

Get the value of Span class inside a Select Option

提问人:Hasnain Ghias 提问时间:8/26/2022 更新时间:8/26/2022 访问量:381

问:

我知道它可能看起来是重复的,但事实并非如此。

这是我的选择的样子:

<select id="avpMy4Y7E4cH_-iIRmmAK6-2GsEOu6Sjr-0-0"> 
 <option value="1Ltr [ <span class=money>Rs.1,495.00</span> ]">...</option> 
</select>

我只想得到类“钱”的价值。

这是我尝试过的:

var val = $('#avpMy4Y7E4cH_-iIRmmAK6-2GsEOu6Sjr-0-0 option:selected').find('.money').val();

但这返回空值。

我怎样才能得到这个特定的值?

JavaScript HTML jQuery

评论

0赞 Ryan Wilson 8/26/2022
您的预期结果是什么?
0赞 freedomn-m 8/26/2022
它只是文本,它不是 HTML,也不在 DOM 中(除了作为选项的 value 属性) - 因此,没有 DOM 导航方法会找到它。[ <span class...
0赞 freedomn-m 8/26/2022
Jquery版本@RyanWilson的回答:(除了也是无效的HTML,所以把里面的部分解压var val = $("<div>").html($("#avpMy4Y7E4cH_-iIRmmAK6-2GsEOu6Sjr-0-0 option:selected").val().match(/\[(.*)\]/)[1]).find(".money").text();ltr [[])

答:

0赞 Ryan Wilson 8/26/2022 #1

我有点不清楚您想要返回什么,但这将返回跨度和 .Span 元素没有值属性。textContentclassNames

您可以使用将选定的选项文本转换为 HTML 文档,从与该选择器匹配的文档中选择元素,然后提取DOMParsertextContent

window.addEventListener("DOMContentLoaded", () => {
    const opt = document
         .querySelector('#avpMy4Y7E4cH_-iIRmmAK6-2GsEOu6Sjr-0-0 option:checked');
    const parser = new DOMParser();
    //convert the value of the selected option to html document
    const htmldoc = parser.parseFromString(opt.value, "text/html");
    //select all elements with className money from html document
    const moneys = htmldoc.querySelectorAll('.money');
    //iterate each and display it's textContent
    moneys.forEach((a) => {
        console.log(a.textContent);
        //if you want to read the classNames
        a.classList.forEach((b) => {
            console.log(b);
        });
    });
});
<select id="avpMy4Y7E4cH_-iIRmmAK6-2GsEOu6Sjr-0-0"> 
 <option selected value="1Ltr [ <span class=money>Rs.1,495.00</span> ]"></option> 
</select>