如何将值从一个函数传递给HTML回调?

时间:2015-09-01 09:34:39

标签: javascript dom

var sno=10;
row.insertCell(6).innerHTML="input type='button' value='edit' onclick='editRecord('sno');'";

我想将sno值传递给另一个函数。

function editRecord(mySno){}

6 个答案:

答案 0 :(得分:3)

尽量不要混合代码。

创建HTML元素

var newRow = row.insertCell(6),
      input = document.createElement('input');

此方法不仅比字符串innerHTML快,它还允许您将输入作为JavaScript对象处理。

input.type = 'button';
input.value = 'edit';
input.onclick = editRecord;

您已创建了一个新行,但如果您没有创建新行,则可以清除该行中的代码:

newRow = (function clearHtmlElement (el){
    var newEl = el.cloneNode();
    el.parentNode.replaceChild(newEl, el);
    return newEl;
}(newRow));

最后将输入附加到row元素:

newRow.appendChild(input);

在HTML元素范围中保存您的值

然后您就可以使用属性保存您的值:

input.dataset.sno = 10;

input.setAttribute('data-sno', 10);

或者您可以将其保存到HTML元素中:

input.sno = 10;

在函数中使用您的值

function editRecord () {
    var sno = this.sno
           || this.getAttribute('data-snow')
           || this.dataset.snow;
    ...
}

选择使用它的方式或像我在这里一样使用它们。现在您的函数中有sno,更重要的是,它可以是您想要的JavaScript对象

更新:适合使用函数

如果你想使用你在问题上定义的函数,那么当你定义onclick处理程序时,你将不得不这样做:

input.onclick = (function(){
    var mySno = sno;
    return function(){
        editR(mySno);
    };
}());

这里,使用范围,mySno将在每次定义onclick处理程序时保存sno的值的引用。但是这对于对象不起作用,所以只有数字或字符串可以工作......加上它有点难看。

答案 1 :(得分:1)

//当sno是一个整数时 var sno = 10;
row.insertCell(6).innerHTML ="输入类型='按钮'值='编辑' onclick =' editRecord(" + sno +");'";

//当sno是一个角色时 var sno =' C&#39 ;;
row.insertCell(6).innerHTML ="输入类型='按钮'值='编辑' onclick =' editRecord(\'" + sno +" \');'";

答案 2 :(得分:0)

editRecord('sno');正在传递字符串' sno',您需要像这样传递变量:editRecord(sno);

答案 3 :(得分:0)

使用我为您撰写的以下专栏:

<强>代码

var sno=10;
    row.insertCell(6).innerHTML="input type='button' value='edit' onclick='editRecord(\'"+sno+"\');'";

答案 4 :(得分:0)

从来没有你不能在双重quat或单一单人使用双重quat。 这不是真的。 &#34;为XXXXX&#34; YYYYY&#34; XXXX&#34; 您可以使用 &#34;为XXXXX&#39; YYYYY&#39;为XXXXX&#34; 要么 &#34;为XXXXX \&#34; YYYYY \&#34; XXXX&#34; 要么 &#34; XXXX&#34; +&#34; YYYYY&#34; +&#34; XXXX&#34;

var sno = 10; row.insertCell(6).innerHTML =&#34;输入类型=&#39;按钮&#39;值=&#39;编辑&#39;的onclick =&#39; editRecord(&#39; + SNO +&#39;);&#39;&#34 ;;

答案 5 :(得分:-1)

您已将此行传递给该行:onclick =&#39; editRecord(sno);&#39;

只需删除&#39;来自sno。