You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让按钮onclick事件调用JSON数组中存储的API完整报道链接

动态修改window.open跳转地址的实现方案

前置问题修正

首先你提供的JSON返回示例存在两处语法问题,需要服务端返回时修正,否则前端解析会报错:

  • title字段末尾缺少英文逗号
  • url字段值缺少http://或https://协议头,直接调用window.open会被识别为当前站点的相对路径,导致跳转错误

核心实现逻辑

你当前的代码固定读取data.news[0].url,只能跳转第一条新闻的链接。要实现动态适配不同新闻的跳转,只需要在渲染对应新闻的按钮时,把当前新闻的URL或者对应数组索引作为参数传入点击函数即可:

1. 传URL参数方案(更稳妥)

动态渲染的HTML示例

循环生成新闻列表时,直接把对应新闻的url传入函数:

<!-- 第一条新闻的按钮 -->
<button onclick="newWindow('https://www.newsnetwork.com/soccer-team-wins-the-world-cup')">查看完整报道</button>
<!-- 第二条新闻的按钮 -->
<button onclick="newWindow('https://www.newsnetwork.com/xxx')">查看完整报道</button>

对应JS代码

function newWindow(targetUrl){
  // 增加非空校验避免报错
  if(targetUrl) {
    // 第二个参数_blank强制新标签页打开,可根据需求调整
    window.open(targetUrl, '_blank')
  }
}

2. 传数组索引方案

如果不想在HTML里写完整URL,也可以传对应新闻在news数组里的索引,前提是接口返回的data对象全局可访问:

HTML示例

<button onclick="newWindow(0)">查看第一条完整报道</button>
<button onclick="newWindow(1)">查看第二条完整报道</button>

对应JS代码

function newWindow(newsIndex){
  // 可选链操作符避免索引越界报错
  const targetUrl = data.news?.[newsIndex]?.url
  if(targetUrl) {
    window.open(targetUrl, '_blank')
  }
}

内容的提问来源于stack exchange,提问作者user16645351

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 15:42:02