[英]How to get last character of .val() in Javascript
我想根據所選選項對我的選擇元素應用不同的背景顏色。
我有這段代碼要應用於我的案例:
$('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));
但它不起作用
我從這個示例中獲取了這段代碼這也可以按我的意願工作,但在我的情況下,每個選項的選項值都不同,並且我有數百個選擇和選項。 在這種格式中:
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 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>
問題是您在undefined
上應用slice
。 .val().id
是undefined
。
在您的html
您不應該得到最后一個字符。它不是最后一個。 用這個
$('select').on('change', function(ev) {
$(this).attr('class', '').addClass($(this).children(':selected').val().split('.')[1].trim().slice(-1));
});
您可以使用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>
嘗試 val().pop(); 應該返回最后一個元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.