将 onclick 控件发送到 javascript 函数

sending onclick control to javascript function

我试图将属性及其值从 onclick 事件传递给 javascript 函数,但返回时未定义。

<script type="text/javascript">

function addParameters(control) {
         alert(control._userid);
        alert(control._flag);
}

<button text="Button" ID="btn1" _userid="datatest" _flag="datafromdatabaase" title="Add this to the list" onclick="addParameters(this);"> Button</button>

您不能像那样直接访问那些自定义属性。您需要通过元素的 attributes 属性 访问它们。试试这个:

<button text="Button" ID="btn1" _userid="datatest" _flag="datafromdatabaase" title="Add this to the list" onclick="addParameters(this);"> Button</button>

<script type="text/javascript">

function addParameters(control) {
  alert(control.attributes._userid);
  alert(control.attributes._flag);
}
</script>

如果你想获取这些属性的值,试试这个:

<button text="Button" ID="btn1" _userid="datatest" _flag="datafromdatabaase" title="Add this to the list" onclick="addParameters(this);"> Button</button>

<script type="text/javascript">

function addParameters(control) {
  alert(control.attributes._userid.nodeValue);
  alert(control.attributes._flag.nodeValue);
}
</script>

我建议您将 id 添加到按钮元素,然后使用该 id 绑定点击事件监听器:

// Html
<button id="btn1" _userid="1" flag="true"> </button>

//Javascript
document.getElementById("btn1").addEventListener('click', click);

function click(event){
    var attrs = event.target.attributes;
    var userid = attrs._userid;
    var flag = attrs._flag;
}

我推荐这种方法而不是内联的 onclick javascript 事件,因为这样你就可以将 html 与 javascript 分开。 html 负责视图和表示数据。 javascript 负责与视图和功能的交互。通过这种方式,数据的表示和功能是分离和不同的。