0

我想在动态创建对象时对其属性进行操作。

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

3 回答 3

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 ...");
于 2013-02-11T14:22:41.240 回答
0

不要添加 onclick 属性,而是给标签一个类(在这个例子中我使用类增加和减少)。然后添加以下jquery代码

$(document)
.on('click', '.increase', function() {
    alert('increase function');
});
.on('click', '.decrease', function() {
    alert('decrease function');
});
于 2013-02-11T12:45:36.320 回答
0

您可以使用以下方法创建元素document.createElement

var newDiv = document.createElement("div");

newDiv然后在将元素添加到文档之前进行修改。

document.createElement有关此处的更多信息: https ://developer.mozilla.org/es/docs/DOM/document.createElement

于 2013-02-11T12:47:14.333 回答