【问题标题】:javascript onclick function variable undefinedjavascript onclick函数变量未定义
【发布时间】:2015-09-10 10:53:21
【问题描述】:

我有一个 javascrpt onclick 函数,但它说变量未定义,onclick 来自标签

<a href="#" title="Click to select" rowno="'+NROW+'" name="'+NAME+'" onClick="remname(rowno,name);"></a>

我收到一条错误消息,提示“rowno”未定义

这不过只发生在 IE11 IE7 可以完美运行并运行该函数

javascript:

    function remname(NAME,ROW)
{
    if (confirm('Remove registration entry '+NAME+'?'))
    {
        ***FUNCTION USING ANOTHER SYSTEM***
    }
}

【问题讨论】:

  • 能否请您也发布remname(rowno,name) 的定义..如果您能在小提琴中重现该问题,那将很有帮助..
  • 你不能像这样添加自己的属性。尝试使用 data-* 代替。 (这解决了一半的问题。稍后让 remname 接受 dom 元素,然后(!)读取这些属性)
  • 再次:您的 Javascript 代码在哪里?
  • 如果可能,请同时发布您的 HTML 和 Javascript 代码。兄弟,我们会帮助你的。

标签: javascript html onclick


【解决方案1】:

onclick 属性中编写的代码部分在 this 引用 onclick 属性所属元素的函数中运行。任何其他非全局变量(在您的情况下为 rownoname)都将是未定义的。因此,您可以使用this 引用来访问具有名为getAttrubute() 的方法的DOMElement 来获取属性值,如下所示:

remname(this.getAttribute('rowno'), this.getAttribute('name'))

但是,我也建议使用事件侦听器而不是 on* 属性。这将是一种更好、更容易维护的做法。

HTML

<a href="#" id="magicAnchor" title="Click to select" rowno="'+NROW+'" name="'+NAME+'"></a>

JavaScript

document.getElementById('magicAnchor').addEventListener('click', function() {
    if (confirm('Remove registration entry '+ this.getAttribute('name') +'?'))
    {
        ***FUNCTION USING ANOTHER SYSTEM***
        // to access rowno attribute use: this.getAttribute('rowno')
    }
});

【讨论】:

  • 请考虑编辑您的帖子,以添加更多关于您的代码的作用以及它为何能解决问题的说明。一个大部分只包含代码的答案(即使它正在工作)通常不会帮助 OP 理解他们的问题。
  • 编辑了代码以拥有 this.getAttribue 并且它现在可以工作了谢谢 :)
【解决方案2】:

您可以稍后在 remname() 函数中访问它们,而不是传递这些变量,例如

var remname=function(){
            var rowno=document.getElementById("selectme").getAttribute("data-rowno");
            var NAME=document.getElementById("selectme").getAttribute("data-name");
            console.log(rowno+' '+NAME);
        }

这里是html

<a href="#" id="selectme" title="Click to select" data-rowno="'+NROW+'" data-name="'+NAME+'" onclick="remname()">abc</a>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2013-04-28
    相关资源
    最近更新 更多