" .$event->event_title.""; -6ren">
gpt4 book ai didi

javascript - 将变量传递给 .html() 函数

转载 作者:行者123 更新时间:2023-11-30 12:33:43 26 4
gpt4 key购买 nike

     <!-- The select drop down menu (works fine) -->
<select id="select-event-type">
<?php foreach ($this->events as $event) {
echo "<option value='" .$event->event_id. "'>" .$event->event_title."</option>";
}?>
</select>

<!-- The javascript, which is supposed to output something according to the chosen option in the select drop down -->
<script>
(function ($) {
var events = <?php echo (count($this->events) > 0) ? json_encode($this->events) : "null"; ?>;
$(document).ready(function() {
$('#select-event-type').change(function() {
if (events) {
var event = events[this.selectedIndex];
$('#event-details').html(event);
}
});
});
})($);
</script>

<!-- In this div the output will be displayed -->
<div id="event-details"></div>

事件变量未定义。

例如,如果我这样做:var event = 'hello' 它会按预期输出 'hello'。

所以问题似乎出在这部分:events[this.selectedIndex];。我做错了什么?

我对此很陌生。非常感谢您的帮助!!

更新:
控制台输出(在 chrome 中):

     <script>
(function ($) {
var events = JSON.parse({"1":{"event_id":"1","event_title":"event1","event_desc":"event1","event_location":"eventlocation","event_requirements":"event1","event_date":"2022-07-20 15:00:00"},"2":{"event_id":"2","event_title":"event2","event_desc":"event2","event_location":"eventlocation","event_requirements":"event2","event_date":"2015-04-20 15:00:00"},"3":{"event_id":"3","event_title":"event3","event_desc":"event3","event_location":"eventlocation","event_requirements":"event3","event_date":"2019-11-20 16:00:00"}}); $(document).ready(function() {
$('#select-event-type').change(function() {
if (events) {
var event = events[$(this).selectedIndex];
$('#event-details').html(event);
}
});
});

</script>

JSON:

{
"1": {
"event_id": "1",
"event_title": "event1",
"event_desc": "event1",
"event_location": "eventlocation",
"event_requirements": "event1",
"event_date": "2022-07-20 15:00:00"
},
"2": {
"event_id": "2",
"event_title": "event2",
"event_desc": "event2",
"event_location": "eventlocation",
"event_requirements": "event2",
"event_date": "2015-04-20 15:00:00"
},
"3": {
"event_id": "3",
"event_title": "event3",
"event_desc": "event3",
"event_location": "eventlocation",
"event_requirements": "event3",
"event_date": "2019-11-20 16:00:00"
}
}

最佳答案

获取 select 的值元素使用this.value .因此改变:

var event = events[this.selectedIndex];

收件人:

var event = events[this.value];

但是,如果您的json 是一个索引为0,1,2,3,4 的数组而不是选项值为 keys 的对象然后你使用 this.selectedIndex是正确的。

更新:

根据发布的示例 JSON,正确的代码应该是:

var event = events[this.selectedIndex + 1].event_title;

特别说明

您可以使用以下任一方法获取所有事件数据:

var event = JSON.stringify( events[this.selectedIndex + 1] ); //gives you a string of everything

或者你可以构建你想要的样子:

var event = $('<div/>');
$.each( events[this.selectedIndex + 1], function(k,v) {
event.append( $('<div/>',{text:k + ': ' + v}) );
});

关于javascript - 将变量传递给 .html() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26784686/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com