【问题标题】:How to get last character of .val() in Javascript如何在 Javascript 中获取 .val() 的最后一个字符
【发布时间】:2019-02-21 23:40:01
【问题描述】:

我想根据所选选项为我的选择元素应用不同的背景颜色。

我想将这段代码应用到我的案例中:

$('select').on('change', function(ev) {
    $(this).attr('class', '').addClass($(this).children(':selected').val());
});

问题是,在我的情况下,我不想要所选选项的完整值。但只有.val()返回的值的最后一个字符

我试过了

$(this).attr('class', '').addClass($(this).children(':selected').val().id.slice(-1));

但它不起作用

我从Example 中获取了此代码 这也可以按我的意愿工作,但在我的情况下,每个选项的选项值都不同,我有数百个选择和选项。 采用这种格式:

Name - Date - 1 Letter Variable

所以我有这样的 CSS:

select, option { background: #fff; }
select.P, option[value$='P'] { background: yellow; }
select.O, option[value$='O'] { background: lightblue; }
select.A, option[value$='A'] { background: lightgreen; }
select.R, option[value$='R'] { background: salmon; }

还有一个select的例子:

<select onchange='myFunction()' id='" . $i . "' name='" . $i . "' style='width: 80px;'>
        <option value='' style='background:white' style='width: 80px;'></option>
        <option value='" . $vacationIdP . "' style='background:yellow' style='width: 80px;'>P</option>
        <option value='" . $vacationIdO . "' style='background:lightblue' style='width: 80px;'>O</option>
        <option value='" . $vacationIdA . "' style='background:lightgreen' style='width: 80px;'>A</option>
        <option value='" . $vacationIdR . "' style='background:salmon' style='width: 80px;'>R</option>
</select>

【问题讨论】:

标签: javascript select substring option


【解决方案1】:

问题是您在undefined 上应用slice.val().idundefined
在您的html 中,您不应该得到最后一个字符。它不是最后一个。使用这个

$('select').on('change', function(ev) {
    $(this).attr('class', '').addClass($(this).children(':selected').val().split('.')[1].trim().slice(-1));
});

JS Fiddle

【讨论】:

  • @Mark Ba​​ijens 但伙计。我想我已经回答了。我发布了他正在尝试访问val() 中的id,即undefined我没有回答关于获取最后一个字符的问题
  • 我看到您发布的 JS Fiddle 代码适用于我的示例....但在我的实际网页上它没有...
  • @Mihail-Cosmin Munteanu 那么你可能在其他地方犯了错误
  • 我已经有另一个脚本运行选择元素
  • @Mihail-Cosmin Munteanu 是的,有可能
【解决方案2】:

您可以使用chartAt

$('select').on('change', function(ev) {
  let k = $(this).children(':selected').val();
  console.log(k.charAt(k.length - 1))
  //$(this).attr('class', '').addClass($(this).children(':selected').val());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select>
  <option value='abc'> ABC</option>
  <option value='def'>DEF</option>
  <option value='ghi'> GHI</option>
</select>

【讨论】:

  • 有什么理由拒绝投票?
  • 我删除了反对票,但是。你可以解释为什么他不应该使用splice(-1)而使用charAt
【解决方案3】:

试试 val().pop();应该返回最后一个元素。

【讨论】:

  • 这有什么问题?这对我有用。请解释一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-16
  • 2011-09-04
  • 2011-02-10
  • 2013-07-06
  • 2011-07-07
  • 2011-08-17
相关资源
最近更新 更多