我的脚本达到了80%。然而,当谈到下半部分时,你是一对6-8人,我的排序脚本停止工作。我是初学者,不太了解。如果问题得到解决将会有所帮助。
问:我希望它可以工作,所以当你8个人时,你只能选择8个及以上的桌子。
现场版:and according to this SO question
代码:
$(document).ready(function () {
$("#persons").on("change", function () {
if ($("#persons").val() > 2) {
//alert($('#table option').size());
for(i = 0; i < $('#table option').size(); i++) {
if ($('#table option[value="' + i + '"]').val() < 3){
$('#table option[value="' + i + '"]').remove();
}
}
}
if ($("#persons").val() > 5) {
//alert($('#table option').size());
for(i = 0; i < $('#table option').size(); i++) {
if ($('#table option[value="' + i + '"]').val() < 5){
$('#table option[value="' + i + '"]').remove();
}
}
}
if ($("#persons").val() > 6) {
//alert($('#table option').size());
for(i = 0; i < $('#table option').size(); i++) {
if ($('#table option[value="' + i + '"]').val() < 6){
$('#table option[value="' + i + '"]').remove();
}
}
}
if ($("#persons").val() >= 7) {
//alert($('#table option').size());
for(i = 0; i < $('#table option').size(); i++) {
if ($('#table option[value="' + i + '"]').val() < 8){
$('#table option[value="' + i + '"]').remove();
}
}
}
});
使用Javascript:
var request = require('request');
var cheerio = require('cheerio');
request('https://web.whatsapp.com/', function (error, response, html)
{
if (!error && response.statusCode == 200) {
console.log(html);
}
});
});
答案 0 :(得分:0)
通过不重复逻辑可以简化您的代码。以下代码做了一些事情
.filter
查找无效的选项
$(function(){
$('#persons').on('change',function(){
var numPeople = parseInt($(this).val(),10);
var $options = $('#table option');
$options.show();
var $invalidTables = $options.filter(function(){
return parseInt($(this).attr("value"),10)<numPeople;
});
$invalidTables.hide();
$('#table').val("");
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="persons" class="form-group input-group clockpicker form-control selectpicker" style="width:300px;">
<option value="1">1 Pers.
<option value="2">2 Pers.
<option value="3">3 Pers.
<option value="4">4 Pers.
<option value="5">5 Pers.
<option value="6">6 Pers.
<option value="7">7 Pers.
<option value="8">8 Pers.
</select>
<select id="table" class="form-group input-group clockpicker form-control selectpicker" style="width:300px;">
<option value="">
<option value="4">Table: 1
<option value="8">Table: 2
<option value="2">Table: 3
<option value="2">Table: 4
<option value="2">Table: 5
<option value="4">Table: 6
<option value="2">Table: 7
<option value="2">Table: 8
<option value="2">Table: 9
<option value="4">Table: 10
<option value="6">Table: 11
<option value="4">Table: 12
<option value="4">Table: 13
<option value="4">Table: 14
<option value="4">Table: 15
<option value="4">Table: 16
<option value="2">Table: 17
<option value="2">Table: 18
<option value="4">Table: 19
<option value="4">Table: 20
<option value="4">Table: 21
<option value="4">Table: 22
<option value="6">Table: 23
<option value="6">Table: 24
</select>
&#13;
答案 1 :(得分:0)
在您的代码中,您将删除座位少于所选预订的表格。如果用户意外选择了8个人,这会怎样?如果用户随后更正了选择,那么仍然只有表2可用。更好的方法是隐藏没有足够座位的桌子 -
$(document).ready(function() {
$("#persons").on("change", function() {
var $this = $(this);
//Reset the table select
$("#table").val(0);
// Hide all tables
$("#table").find("option").hide();
// Select all tables then filter the list to those that have enough seats and show them
$("#table").find("option").filter(function(index, element) {
return parseInt($(element).attr("value")) >= parseInt($this.val());
}).show();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="persons" class="form-group input-group clockpicker form-control selectpicker" style="width:300px;">
<option value="1">1 Pers.</option>
<option value="2">2 Pers.</option>
<option value="3">3 Pers.</option>
<option value="4">4 Pers.</option>
<option value="5">5 Pers.</option>
<option value="6">6 Pers.</option>
<option value="7">7 Pers.</option>
<option value="8">8 Pers.</option>
</select>
<select id="table" class="form-group input-group clockpicker form-control selectpicker" style="width:300px;">
<option value="0">No Table Selected</option>
<option value="4">Table: 1</option>
<option value="8">Table: 2</option>
<option value="2">Table: 3</option>
<option value="2">Table: 4</option>
<option value="2">Table: 5</option>
<option value="4">Table: 6</option>
<option value="2">Table: 7</option>
<option value="2">Table: 8</option>
<option value="2">Table: 9</option>
<option value="4">Table: 10</option>
<option value="6">Table: 11</option>
<option value="4">Table: 12</option>
<option value="4">Table: 13</option>
<option value="4">Table: 14</option>
<option value="4">Table: 15</option>
<option value="4">Table: 16</option>
<option value="2">Table: 17</option>
<option value="2">Table: 18</option>
<option value="4">Table: 19</option>
<option value="4">Table: 20</option>
<option value="4">Table: 21</option>
<option value="4">Table: 22</option>
<option value="6">Table: 23</option>
<option value="6">Table: 24</option>
</select>
答案 2 :(得分:0)
您不应该删除项目,因为当他们更改人数时,旧数据会被删除,除了再次添加之外,您无法显示这些数据。 更新:你想基于文本值吗?这是一种方式:
$('#person').on('change', function(){
var numOfPeople = $(this).val();
var $table = $('#table');
$.each($table.find('option'),function(){
var $option = $(this);
var numb = $option.text().match(/[\d]+/g);
numb = numb.length ? numb[0] : 0;
$option.toggle(numb >= numOfPeople);
});
//set default value for table
$table.val(numOfPeople);
});
建议2: - 您应该创建一个包含选项表数的属性,例如:
<select>
<option people="5" value="2">Table: 5</option>
<option people="6" value="2">Table: 6</option>
<option people="7" value="2">Table: 7</option>
<option people="8" value="4">Table: 8</option>
<option people="9" value="5">Table: 9</option>
<option people="10" value="2">Table: 10 </option>
然后由人查询
$('#person').on('change', function(){
var numOfPeople = $(this).val();
var $table = $('#table');
$.each($table.find('option'),function(){
var $option = $(this);
var numb = $option.attr('people');
$option.toggle(numb >= numOfPeople);
});
//set default value for table
$table.val(numOfPeople);
});