开发者问题收集

显示未捕获的类型错误:无法将属性“selected”设置为 null

2017-12-22
5426

Showing Uncaught TypeError: Cannot set property 'selected' of null

    <select id="sorter" class="sorter-options">                                                             
    <option value="name">Product Name </option>
    <option value="price">Price</option>
    <option value="sort_by">Scale</option>
    </select>


   <script type="text/javascript">
    var val = '';    
    document.querySelector('#sorter [value="' + val + '"]').selected =  true;
   </script>
2个回答

val 是空字符串,而此代码段中没有 option 具有空字符串作为值。请创建一个值为空字符串的选项,或将 option 的预定义值设置为 val

var val = 'price';
document.querySelector('#sorter [value="' + val + '"]').selected = true;
<select id="sorter" class="sorter-options">                                                             
    <option value="name">Product Name </option>
    <option value="price">Price</option>
    <option value="sort_by">Scale</option>
    </select>
brk
2017-12-22

您没有选项 val='' ,因此选择器返回预期的 null。

您可以根据需要添加默认的空选项

<select id="sorter" class="sorter-options">
    <option value="">Select options</option>             
    <option value="name">Product Name </option>
    <option value="price">Price</option>
    <option value="sort_by">Scale</option>
    </select>

 <script type="text/javascript">
    var val = '';    
    document.querySelector('#sorter [value="' + val + '"]').selected =  true;
   </script>
  

或者将值设置为可用选项

 var val = 'price';    
 document.querySelector('#sorter [value="' + val + '"]').selected =  true;

或者在检查选定值之前检查是否存在。

 var val = '';    
 document.querySelector('#sorter [value="' + val + '"]') !== null? document.querySelector('#sorter [value="' + val + '"]').selected =  true: null;

或者如果您只是希望设置默认值,请在选择时使用 defaultValue

<select id="sorter" class="sorter-options" defaultValue="price">
Shubham Khatri
2017-12-22