不确定为什么会发生这种情况,但我的javascript更改显示的过去事件的数量并不正常。只有第一个选择选项(3)和最后一个选项(全部)似乎触发了onchange事件。请查看我的代码并让我知道如果我做错了什么,我是一个刚接触js的php人。此外,我会在我的演示网站上发布它,直到我接受答案: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;
}
}
答案 0 :(得分:0)
我已经弄明白了,过去只有5个测试事件,所以如果我选择一个数字,我需要检查该值是否大于#of对象,如果是,那么我需要使用object.length。这是for循环之前添加的代码:
if(selected>pastEvents.length){
selected = pastEvents.length;
}