a标签onclick传递参数不对

文章讲述了在JavaScript中如何正确地通过onclick事件传递参数,特别是在使用模板字符串时的注意事项。提到了在Vue组件中绑定事件处理程序的方法,以及考虑了安全因素,如防止XSS攻击。文章提供了示例代码来解释如何在DOM元素上绑定函数以及在组件内部调用这些函数。
摘要由CSDN通过智能技术生成

a标签onclick传递参数不对

问题:方法能够调用到,传递参数时参数奇奇怪怪的。不是想要的值

一、代码

returnContent(content) {
   var str_new1 = content
   let temporaryArr = str_new1.split(`a href="`)
   let resultArr = []
   temporaryArr.forEach((item, index) => {
       if (index == 0) {
           resultArr[index] = item
       } else {
           let id = `${item.slice(0, item.indexOf('"'))}`
           resultArr[index] =
               'a href="' +
               'javascript:;"' +
               ' ' +
               `οnclick="openDetails('${id}')` +  //模板字符串中要加‘’
               ';return false;"' +
               ' ' +
               item.slice(item.indexOf('target="_blank"'))
       }
   })
   return resultArr.join('')
},

链接: https://blog.csdn.net/readiay/article/details/50947311

在 JavaScript 中,字符串变量需要使用引号或双引号来表示。因此,在 onclick 事件处理程序中,如果要将某个变量的值作为参数传递给函数,需要将变量名放在字符串模板中,并使用引号或双引号对整个字符串进行包装。

例如,在 onclick 事件处理程序中,如果要将变量 id 的值传递给名为 openDetails 的函数,可以这样写:

<button onclick="openDetails('${id}')">打开详情</button>

在这个示例中,我们使用 ${id} 表达式将变量 id 的值插入到字符串模板中,然后使用单引号对整个字符串进行包装。当用户单击按钮时,浏览器将根据模板渲染出一个类似于 openDetails(‘123’) 的函数调用语句,其中的 123 是变量 id 的值。

需要注意的是,在使用字符串模板时,应该根据实际情况选择合适的引号或双引号进行包装,并且避免因为缺少或多余引号而导致语法错误。另外,为了避免 XSS 攻击和安全漏洞,建议您使用编程方式动态绑定事件处理程序,而不是直接在 HTML 标签中使用 onclick 属性。

openDetails(id)事件绑定到组件上

假如这段代码出现在 Vue 组件中,其中的 this 指向的是组件实例对象。因此,绑定后可以通过组件实例对象调用该函数,例如:

mounted() {
  // 将 openDetails 函数绑定到组件实例对象上
  window.openDetails = this.openDetails;
}

methods: {
  openDetails() {
    // 打开详情页面
  }
}

这段代码是将当前作用域中的 openDetails 函数绑定到 this 对象上,以便在其他地方可以通过 this.openDetails() 调用该函数。

在这个示例中,我们在 Vue 组件的 mounted 生命周期钩子中将 openDetails 函数绑定到组件实例对象上,然后在组件的 methods 中定义了一个 openDetails 函数,用于打开详情页面。当其他地方需要调用 openDetails 函数时,可以通过 window.openDetails() 或者 this.openDetails() 进行调用。

需要注意的是,由于 window 对象在浏览器中是全局对象,因此使用 window.xxx 的方式定义全局变量或函数可能会引起命名冲突和安全问题。为了避免这种情况发生,最好使用模块化的方式进行组织和管理,以确保代码的可读性和可维护性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值