首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将属性“selected”设置为不适用于jQuery或vanilla的选项

将属性“selected”设置为不适用于jQuery或vanilla的选项
EN

Stack Overflow用户
提问于 2022-01-26 04:21:32
回答 2查看 54关注 0票数 1

我有一个选择,select接受多个选项(最多2):

代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.14/dist/css/bootstrap-select.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.14.0-beta2/js/bootstrap-select.min.js"></script>


<select class="selectpicker" multiple data-max-options="2">
  <option id="s1" value="Mustard Heinz">Mustard Heinz</option>
  <option id="s2" value="Ketchup Heinz">Ketchup Heinz</option>
  <option id="s3" value="Relish Whatever">Relish Whatever</option>
</select>

从后端,我收到了这样一个String

['Mustard Heinz', ' Ketchup Heinz']

所以我想要的是,当页面加载时,将选择Mustard HeinzKetchup Heinz

我试过的是:

vanilla js逼近

代码语言:javascript
复制
document.addEventListener("DOMContentLoaded", function() {
    var selected_sauces = "['Mustard Heinz', ' Ketchup Heinz']" //string from backend
    if (selected_sauces.includes("Mustard Heinz")){
        var s1 = document.getElementById(s1);
        s1.setAttribute('selected', 'selected');
    }
    if (selected_sauces.includes("Ketchup Heinz")){
        var s2 = document.getElementById(s2);
        s2.setAttribute('selected', 'selected');
    }
    if (selected_sauces.includes("Relish Whatever")){
        var s3 = document.getElementById(s3);
        s3.setAttribute('selected', 'selected');
    }
});

jQuery approach

代码语言:javascript
复制
$(document).ready(function() {
    var selected_sauces = "['Mustard Heinz', ' Ketchup Heinz']" //string from backend
    if (selected_sauces.includes("Mustard Heinz")){
        $('#s1').prop({defaultSelected: true});
    }
    if (selected_sauces.includes("Ketchup Heinz")){
        $('#s2').prop({defaultSelected: true});
    }
    if (selected_sauces.includes("Relish Whatever")){
        $('#s3').prop({defaultSelected: true});
    }
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-26 04:35:11

当您使用document.getElemendById()时,您需要将您的id放在类似document.getElemendById('s1')的单引号或双引号中。

下面是一个示例:

代码语言:javascript
复制
    var selected_sauces = "['Mustard Heinz', ' Ketchup Heinz']" //string from backend
    if (selected_sauces.includes("Mustard Heinz")){
        var s1 = document.getElementById('s1');
        s1.setAttribute('selected', 'selected');
    }
    if (selected_sauces.includes("Ketchup Heinz")){
        var s2 = document.getElementById('s2');
        s2.setAttribute('selected', 'selected');
    }
    if (selected_sauces.includes("Relish Whatever")){
        var s3 = document.getElementById('s3');
        s3.setAttribute('selected', 'selected');
    }
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.14/dist/css/bootstrap-select.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.14.0-beta2/js/bootstrap-select.min.js"></script>


<select class="selectpicker" multiple data-max-options="2">
  <option id="s1" value="Mustard Heinz">Mustard Heinz</option>
  <option id="s2" value="Ketchup Heinz">Ketchup Heinz</option>
  <option id="s3" value="Relish Whatever">Relish Whatever</option>
</select>

票数 2
EN

Stack Overflow用户

发布于 2022-01-26 09:06:56

与#Imperyum答案相同的方法也适用于JQuery。

如果你不发射

代码语言:javascript
复制
$(document).ready(function() {})

线路不起作用。

代码语言:javascript
复制
var selected_sauces = "['Mustard Heinz', ' Ketchup Heinz']"; //string from backend
    if (selected_sauces.includes("Mustard Heinz")){
        $('#s1').prop('selected', 'selected');
    }
    if (selected_sauces.includes("Ketchup Heinz")){
        $('#s2').prop('selected', 'selected');
    }
    if (selected_sauces.includes("Relish Whatever")){
        $('#s3').prop('selected', 'selected');
    }
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.14/dist/css/bootstrap-select.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.14.0-beta2/js/bootstrap-select.min.js"></script>

<select class="selectpicker" multiple data-max-options="2">
  <option id="s1" value="Mustard Heinz">Mustard Heinz</option>
  <option id="s2" value="Ketchup Heinz">Ketchup Heinz</option>
  <option id="s3" value="Relish Whatever">Relish Whatever</option>
</select>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70858639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档