首页 > 解决方案 > 如何选择 eval() 值

问题描述

我有表格

var number = $('.price').text().replace(/[^0-9]/g, '');
$('input#pricea').attr('value', number)
$("select.percent").change(function() {
  var selectedPercent = $(this).children("option:selected").val().replace(/[^0-9]/g, '');
  $('input#percenta').attr('value', selectedPercent)
});

var x = eval("number* selectedPercent") + "<br>";
$('#demo').attr('value', x)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="price">300 $</div>
<select class="percent">
  <option value="0">0%</option>
  <option value="30%">30%</option>
  <option value="40%">40%</option>
  <option value="50%">50%</option>
  <option value="60%">60%</option>
</select>
<div id="demo"></div>
<input type="hidden" name="pricea" id="pricea">
<input type="hidden" name="percenta" id="percenta" value="0">

最后#demo不显示value。有人能帮我吗?请。而且因为我使用了select,所以我想选择将返回不同结果的选项#demo

标签: javascriptjquery

解决方案


不要eval()用于这个。相反,您的.change()回调中将您的字符串数字转换为实际数字(在您使用时为您完成*),然后使用显示输出.append()(这将允许每次更改显示多个数字,使用.html()或每次更改.text()显示一个数字) . 此外,要获取选定的值,您可以简单地执行$(this).val()%从每个<option>值属性中删除(因此您不需要使用正则表达式将其删除),无需获取选定的子选项。

var number = $('.price').text().replace(/[^0-9]/g, '');
$('input#pricea').attr('value', number)
$("select.percent").change(function() {
  var selectedPercent = $(this).val();
  $('input#percenta').attr('value', selectedPercent);
  
  var x = (number * selectedPercent) + "<br>";
  $('#demo').append(x);

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="price">300 $</div>
<select class="percent">
  <option value="0">0%</option>
  <option value="30">30%</option>
  <option value="40">40%</option>
  <option value="50">50%</option>
  <option value="60">60%</option>
</select>
<div id="demo"></div>
<input type="hidden" name="pricea" id="pricea">
<input type="hidden" name="percenta" id="percenta" value="0">


推荐阅读