无法将“this”值从一个javascript函数传递给另一个javascript函数?

时间:2012-04-18 08:26:17

标签: javascript jquery html

我从div onClick方法调用Javascript函数

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

从这个sample_1方法我动态创建一个新的div并在该div中添加一个onclick事件并尝试传递从sample_1函数的参数得到的'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开发人员工具时,在其onClick方法中使用此动态div“sample_1_1”而不是将对象divSelected值传递给它只是写:

sample_2([object HTMLDivElement]);

如何将div_1中的divSelected对象传递给sample_2?

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

2 个答案:

答案 0 :(得分:1)

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

如果您尝试获取div的内容,则会混淆this$(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());
}

我给你做了一个小例子here ......

答案 1 :(得分:1)

如评论中所述,div元素没有属性。如果您想访问div中的文本,请使用 innerHTML 。参数传递实际上工作正常,只需检查你是否声明。

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

}


function sample_2(divSelected){
    /* Some Code */
    alert(divSelected.innerHTML);
}