使用Blogger API时,下拉框切换无法更新blog1 div内容的问题
问题分析与解决方案
- 核心问题:
getBlogidval函数中使用的data变量未定义。handleResponse函数接收的response数据仅在该函数内部可用,未保存到全局作用域,导致切换下拉选项时无法获取博客文章数据。 - 次要问题:
handleResponse中生成的<select>标签未正确闭合(末尾误写为<select>,应为</select>)。getBlogidval仅更新了文章标题,未同步更新文章内容,与初始显示结构不一致。
修正后的代码
<script> // 定义全局变量存储博客数据 let blogData; function getBlogidval(selectObject) { var value = selectObject.value; var upblog = document.getElementById("blog1"); // 使用全局变量获取对应文章数据,同步更新标题和内容 upblog.innerHTML = "<h2>" + blogData.items[value].title + "</h2><br>" + "<p>" + blogData.items[value].content + "</p>"; } function handleResponse(response) { // 将API返回的数据保存到全局变量,供其他函数调用 blogData = response; document.getElementById("blog0").innerHTML = "<select id='Blogidval' onchange='getBlogidval(this)' width='100%' align='center'><option value='0'><h2>" + response.items[0].title + "</h2></option>" + "<option value='1'><h2>" + response.items[1].title + "</h2></option>" + "<option value='2'><h2>" + response.items[2].title + "</h2></option>" + "<option value='3'><h2>" + response.items[3].title + "</h2></option></select>"; document.getElementById("blog1").innerHTML = "<h2>" + response.items[0].title + "</h2><br>" + "<p>" + response.items[0].content + "</p>"; } </script> <script src="https://www.googleapis.com/blogger/v3/blogs/3213900/posts/8398240586497962757?callback=handleResponse&key=YOUR-API-KEY"></script>
关键修改点
- 新增全局变量
blogData,在handleResponse中将API返回的response赋值给它,让其他函数能访问到博客数据。 - 修改
getBlogidval函数,用blogData替代未定义的data,并补充文章内容的更新逻辑。 - 修复
<select>标签的闭合错误。
内容的提问来源于stack exchange,提问作者Daniel Boardman
相关产品推荐
相关产品推荐

