我想在动态创建对象时操纵对象的属性。
在下面给出的代码中,我想通过调用对象的相应函数来增加 like 属性。但是,元素是动态创建的,并且在 onclick 函数中传递 this 只会引用锚标记。
这个想法类似于这个论坛,其中每个问题都有各种可以批准或不批准的想法。如何独立操作每个对象的属性?
function idea(idea) {
this.ideatext = idea;
this.like = 0;
this.str = "\
<div class = 'entered'> \
<div class = 'text'> " + this.ideatext + "</div> \
<div class = 'anchors'> \
<a href = '' onclick = 'increase()'> Approve </a> \
<a href = '' onclick = 'decrease()'> Disapprove </a> \
</div> \
</div>";
this.increase = function() {
this.like++;
}
this.decrease = function() {
this.like--;
}
}
var ideaobj1 = new idea(someidea1);
var ideaobj2 = new idea(someidea2);
答案 0 :(得分:1)
如果您动态创建javascript代码并且希望它引用其他javascript代码,则必须知道变量名称。没办法。
<script type="text/javascript">
function idea(varName, text)
{
this.varName = varName;
this.ideatext = text;
this.like = 0;
this.str = "\
<div class = 'entered'> \
<div class = 'text'> " + this.ideatext + "</div> \
<div class = 'anchors'> \
<a href = '' onclick = '" + this.varName + ".increase()'> Approve </a> \
<a href = '' onclick = '" + this.varName + ".decrease()'> Disapprove </a> \
</div> \
</div>";
this.increase = function ()
{
this.like++;
return false;
}
this.decrease = function ()
{
this.like--;
return false;
}
}
var wing = new idea("wing", "a wing is ...");
var wheel = new idea("wheel", "a wheel is ...");
</script>
对创建的对象使用某种集中存储。也许是这样的:
var brain = new Object();
brain["wing"] = new idea("brain.wing", "a wing is ...");
brain["wheel"] = new idea("brain.wheel", "a wheel is ...");
答案 1 :(得分:0)
不是添加onclick属性,而是给标记一个类(在本例中我使用了类增加和减少)。然后添加以下jquery代码
$(document)
.on('click', '.increase', function() {
alert('increase function');
});
.on('click', '.decrease', function() {
alert('decrease function');
});
答案 2 :(得分:0)
您可以使用document.createElement
方法创建元素:
var newDiv = document.createElement("div");
然后在将元素添加到文档之前修改newDiv
。
此处有关document.createElement
的更多信息:https://developer.mozilla.org/es/docs/DOM/document.createElement