Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript For循环未按预期运行?_Javascript_Html - Fatal编程技术网

Javascript For循环未按预期运行?

Javascript For循环未按预期运行?,javascript,html,Javascript,Html,我正在尝试创建一个过滤系统,允许用户输入价格,因此只有数组中价格较低的节日才会收到警报。然而,该节目却展示了所有的节日。 谢谢你的回复 代码: var=[ [“雷丁”,“里奇菲尔德大道”,205,“8月24日至26日”,“洛克”], [“公园生活”、“曼彻斯特”、140、“6月8日至9日”、“舞蹈”], [“格拉斯顿伯里”、“萨默塞特”、250、“6月23日至25日”、“备选方案”] ]; var filterfestivals=[[]]; var maxuserprice=document.

我正在尝试创建一个过滤系统,允许用户输入价格,因此只有数组中价格较低的节日才会收到警报。然而,该节目却展示了所有的节日。 谢谢你的回复

代码:

var=[
[“雷丁”,“里奇菲尔德大道”,205,“8月24日至26日”,“洛克”],
[“公园生活”、“曼彻斯特”、140、“6月8日至9日”、“舞蹈”],
[“格拉斯顿伯里”、“萨默塞特”、250、“6月23日至25日”、“备选方案”]
];
var filterfestivals=[[]];
var maxuserprice=document.getElementById(“maxprice”).value;
函数过滤器(){
对于(变量i=0;i<0.length;i++)
if(maxuserprice
请输入您的最高消费价格

过滤器
maxuserprice
将始终是初始值(
''
)。您应该在filter函数中设置新的值,并且您应该首先清除筛选的数组,不要使用
[[]]
,因为这并不意味着二维数组,它只会使用其第一个元素的空数组初始化数组

var filterfestivals = [];

function filter () {
    filterfestivals = [];
    var maxuserprice = Number(document.getElementById("maxprice").value);
    for (var i = 0; i < festivals.length; i++) {
        if (maxuserprice < festivals[i][2]){
            filterfestivals.push(festivals[i])
        }
    }
}
var filterfestivals=[];
函数过滤器(){
filterfestivals=[];
var maxuserprice=Number(document.getElementById(“maxprice”).value);
对于(变量i=0;i<0.length;i++){
if(maxuserprice
您需要执行以下操作

  • 将变量
    filterfestivals
    maxuserprice
    移动到click函数中,因为这些变量需要具有最新值,而不是页面加载时的值
  • filterfestivals
    初始化为空数组

  • maxuserprice
    是一个字符串,应将其转换为数字。尽管在这种情况下,它仍然像在小于比较的情况下一样工作(
    您应该在单击按钮时读取价格,否则在提供任何输入之前它会被初始化(您还应该将输入转换为数字)

    您还需要在每个
    filter
    调用上重置
    filterfestivals
    数组,以便它们不会相加

    最后,您当前的检查正好相反,它只允许那些价格高于输入的显示

    //节日[x][0]城市[x][1]成本[x][2]日期[x][3]类型[x][4]
    变量=[
    [“雷丁”,“里奇菲尔德大道”,205,“8月24日至26日”,“洛克”],
    [“公园生活”、“曼彻斯特”、140、“6月8日至9日”、“舞蹈”],
    [“格拉斯顿伯里”、“萨默塞特”、250、“6月23日至25日”、“备选方案”]
    ];
    var filterfestivals=[];
    函数过滤器(){
    var maxuserprice=parseFloat(document.getElementById(“maxprice”).value);
    filterfestival=[]//清空filterfestival数组,以便我们可以进行多次筛选
    对于(变量i=0;i<0.length;i++)
    如果(maxuserprice>=Festival[i][2]){
    filterfestivals.push(节日[i])
    //i=i+1
    }
    警报(filterfestivals.join('\n'))
    }
    请输入您的最高消费价格
    
    Filter
    的错误太多了,但这就是整个代码的工作原理

    从编辑输入到JS中的几乎所有内容。只需仔细阅读并从中学习

    <!DOCTYPE html>
    <html>
    
    <head>
    </head>
    
    <body> 
    <p1> Please enter your maximum spending price </p1>
    <input type="number" id="maxprice"/>
    <button onclick = "filter()"> Filter </button>
    
    
          <script>
          //               Festival[x][0]   city[x][1]           cost[x][2]    date[x][3]         genre[x][4]
          var festivals = [
                          ["Reading",       "Richfield Avenue",  205,         "24th - 26th August",  "Rock"],
                          ["Park Life",     "Manchester",        140,         "8th - 9th June",      "Dance"],
                          ["Glastonbury",   "Somerset",          250,         "23rd - 25th June",    "Alternative"]
                          ];
          var filterfestivals = [[]];
    
    
          function filter(){
            filterfestivals = [[]];
          var maxuserprice = document.getElementById("maxprice").value;
            for (var i = 0; i < festivals.length; i++) {
                if (festivals[i][2] < maxuserprice){
                    filterfestivals.push(festivals[i])
                }
            }
            alert(filterfestivals)
          }
          </script>
        </body>
    </html>
    
    
    请输入您的最高消费价格
    滤器
    //节日[x][0]城市[x][1]成本[x][2]日期[x][3]类型[x][4]
    变量=[
    [“雷丁”,“里奇菲尔德大道”,205,“8月24日至26日”,“洛克”],
    [“公园生活”、“曼彻斯特”、140、“6月8日至9日”、“舞蹈”],
    [“格拉斯顿伯里”、“萨默塞特”、250、“6月23日至25日”、“备选方案”]
    ];
    var filterfestivals=[[]];
    函数过滤器(){
    filterfestivals=[[]];
    var maxuserprice=document.getElementById(“maxprice”).value;
    对于(变量i=0;i<0.length;i++){
    if(节日[i][2]