1

我正在从 div onClick 方法调用 Javascript 函数

<div onClick="sample_1(this)" />

从这个 sample_1 方法我动态创建一个新的 div 并在该 div 中添加一个 onclick 事件并尝试传递从 sample_1 函数的参数获得的“this”的值,但我无法传递“this”的值第二种方法:

function sample_1 (divSelected) {
    if (!$(divSelected).attr('disabled')) {
       $('div[id=sample_1]').append("<div id='sample_1_1" + categoryID + "' class='selectedActivityCategory' style='background-color:#d9eaf7;' > <img  src='../Images/close.png' onclick='sample_2(" + divSelected.value + ");' /> </div>");
    }

}


function sample_2(divSelected)
{
/* Some Code */
}

当我查看 IE 开发人员工具时,这个动态 div “sample_1_1”在其 onClick 方法中,而不是传递对象 divSelected 值,它只是写:

sample_2([object HTMLDivElement]);

如何将对象 divSelected 从 sample_1 传递到 sample_2?

我正在尝试访问第一个正在调用的 div 的引用并将其引用作为 this 传递给方法 sample_1_1 并从那里创建一个新的 div 和该创建的 div 的 onclick 事件我试图传递第一个 div 的相同引用到 sample_1_1 方法中创建的 div 的 onclick 方法。

4

2 回答 2

1

正如评论中所说, div 元素没有value属性。如果要访问 div 中的文本,请使用innerHTML。参数传递实际上工作正常,只需检查您的 if 语句。

function sample_1 (divSelected) {
    alert(divSelected.innerHTML);
    sample_2(divSelected);

}


function sample_2(divSelected){
    /* Some Code */
    alert(divSelected.innerHTML);
}
于 2012-04-18T08:38:53.543 回答
1

我不明白你想做什么。常规 Javascriptthis没有value属性。

如果您试图获取 div 的内容,那么您正在混淆thisand $(this),因为通过 JQuery 您可以获取 div 的内容(而不是value通过$(this).html().

所以一个可能的解决方案是这样的:

<div id="yourdiv">Content...</div>

$(document).ready(function() {
   $('#yourdiv').click(function() {
      sample_1($(this));
   });
});

function sample_1(div_selected) {
   alert("Contents are: " + div_selected.html());
}

我在这里给你做了一个小例子......

于 2012-04-18T08:38:14.067 回答