动态创建时操纵对象的属性

时间:2013-02-11 12:38:15

标签: javascript jquery html

我想在动态创建对象时操纵对象的属性。

在下面给出的代码中,我想通过调用对象的相应函数来增加 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);

3 个答案:

答案 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