【问题标题】:Javascript onchange only works for select 3 and "all" but not inbetweenJavascript onchange 仅适用于选择 3 和“全部”,但不适用于两者之间
【发布时间】:2015-12-09 04:54:15
【问题描述】:

不知道为什么会发生这种情况,但我用于更改显示的过去事件数量的 javascript 无法正常工作。只有第一个选择选项 (3) 和最后一个选项 (all) 似乎触发了 onchange 事件。请查看我的代码,如果我做错了什么,请告诉我,我是 js 的新手。我也会在我的演示网站上发布它,直到我接受答案:http://aaron-schpitzer.ca/en/events

html(php)

echo '<tr><td><table class="invisible"><tr><td>Number Shown: <select id="select" onchange="changePast()"><option value="3">3</option><option value="10">10</option><option value="20">20</option><option value="'.count($pastEvents).'">All</option></select></td></tr></table></td></tr>';

js

<script>
var pastEvents = <?php echo json_encode($pastEvents); ?>;
function changePast(){
    var e = document.getElementById("select")
    var selected = e.options[e.selectedIndex].value;
    var table = document.getElementById("past_events");
    if(table!=null){
        var innerhtml = "";
        for(i=0;i<selected;i++){
            innerhtml+='<table class="invisible"><tr><td><img src="/'+pastEvents[i]["banner"]+'" alt="Event Banner"></td></tr><tr><td>'+pastEvents[i]["name"]+'</td></tr></table>';
        }
        table.innerHTML = innerhtml;
    }

}

【问题讨论】:

  • 我想我已经弄明白了,只有 5 个过去的测试事件,所以如果我选择一个数字,我需要检查该值是否大于对象数,如果是,那么我需要使用 object.length

标签: javascript html events javascript-events


【解决方案1】:

我已经弄清楚了,过去的测试事件只有 5 个,所以如果我选择一个数字,我需要检查该值是否大于对象数,如果是,那么我需要使用 object.length。这是for循环之前添加的代码:

if(selected>pastEvents.length){
            selected = pastEvents.length;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-31
    • 2022-01-07
    • 2021-05-13
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    相关资源
    最近更新 更多