根据文字选择选择选项

时间:2019-03-19 23:47:23

标签: javascript dom

如果可能,我需要在“现代DOM”中使用它。

这是代码。

<select name="skuAndSize" id="skuAndSize" class="ncss-btn fs16-sm ncss-base pb3-sm prl5-sm pt3-sm css-1rsed2n">
  <option value="" disabled="">Select Size</option>
  <option value="22348626:7" disabled="">US 7</option>
  <option value="22348625:7.5" disabled="">US 7.5</option>
  <option value="22348624:8" disabled="">US 8</option>
  <option value="22348621:8.5" disabled="">US 8.5</option>
  <option value="22348619:9" disabled="">US 9</option>
  <option value="22348623:9.5">US 9.5</option>
  <option value="22348618:10">US 10</option>
  <option value="22348622:10.5">US 10.5</option>
  <option value="22348635:11">US 11</option>
  <option value="22348634:11.5" disabled="">US 11.5</option>
  <option value="22348633:12">US 12</option>
  <option value="22348632:12.5" disabled="">US 12.5</option>
  <option value="22348631:13">US 13</option>
  <option value="22348630:14" disabled="">US 14</option>
  <option value="22348629:15" disabled="">US 15</option>
</select>

我尝试了以下操作,但是我需要用它输入文字,但这不起作用。

var val = 'US 10.5';    
document.querySelector('#skuAndSize [value="' + val + '"]').selected = true;

请帮助,因为我在Swift(evaluateJavaScript)中使用它,所以在现代dom中需要它。

4 个答案:

答案 0 :(得分:0)

快速解答

您可以通过设置属性value来设置选择的值:

document.querySelector('#skuAndSize').value = '22348622:10.5';

请参见https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement

完整示例

const tests = [4, 'Three', 2, '1'];
let i = 0;

window.setInterval(() => {
  const value = tests[i++ % tests.length];
  document.querySelector('select').value = value;
  document.querySelector('p').textContent = `Programatically set \´${value}\´ (type: ${typeof value})`;
}, 2000);
<select>
  <option>-</option>
  <option value="1">One</option>
  <option value="2">Two</option>
  <option>Three</option>
</select>

<p></p>

答案 1 :(得分:0)

您可以使用Array#find()并将text的{​​{1}}属性与所需值进行比较

<option>
var val = 'US 10.5',
  options = document.querySelector('#skuAndSize').options,
  wantedOption = Array.from(options).find(o => o.text === val);
  
if (wantedOption) {
  wantedOption.selected = true;
}

答案 2 :(得分:0)

这是您所需的jquery版本。

$('#skuAndSize').change(function(){

var text1 = 'US 10.5';
$("#skuAndSize option").filter(function() {
    
    return $(this).text() == text1; 
}).prop('selected', true);

})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name="skuAndSize" id="skuAndSize" class="ncss-btn fs16-sm ncss-base pb3-sm prl5-sm pt3-sm css-1rsed2n">
  <option value="" disabled="">Select Size</option>
  <option value="22348626:7" disabled="">US 7</option>
  <option value="22348625:7.5" disabled="">US 7.5</option>
  <option value="22348624:8" disabled="">US 8</option>
  <option value="22348621:8.5" disabled="">US 8.5</option>
  <option value="22348619:9" disabled="">US 9</option>
  <option value="22348623:9.5">US 9.5</option>
  <option value="22348618:10">US 10</option>
  <option value="22348622:10.5">US 10.5</option>
  <option value="22348635:11">US 11</option>
  <option value="22348634:11.5" disabled="">US 11.5</option>
  <option value="22348633:12">US 12</option>
  <option value="22348632:12.5" disabled="">US 12.5</option>
  <option value="22348631:13">US 13</option>
  <option value="22348630:14" disabled="">US 14</option>
  <option value="22348629:15" disabled="">US 15</option>
</select>

答案 3 :(得分:0)

您可以使用javascript设置selectedIndex

target="_blank"
const val = 'US 10.5';
const skuAndSize = document.getElementById ('skuAndSize');
skuAndSize.selectedIndex = [...skuAndSize.options].findIndex (option => option.text === val);