对象属性中的动态值

时间:2011-12-02 22:54:53

标签: javascript oop

想要使oject的动态值(来自用户输入),但我得到“未定义”。我们的想法是有3个输入字段,用户应在其中输入值,这些值将填满警报消息。

<script type="text/javascript">
function Family (fatherName, motherName, sisterName) {

    this.fatherName = fatherName;
    this.motherName = motherName;
    this.sisterName = sisterName;
    this.myFamily = function() {
        alert("My father's name is " + this.fatherName +", my mother's name is "+ this.motherName +" and my sister's name is " + this.sisterName +".");
    }

}

var Me = new Family(
    Family["fatherName"] = father,
    Family["motherName"] = mother,
    Family["sisterName"] = siter);

var father = document.getElementById("fatherId").value;
var mother = document.getElementById("motherId").value;
var sister = document.getElementById("sisterId").value;
</script>

<input type="text" id="fatherId" />
<input type="text" id="motherId" />
<input type="text" id="fatherId" />
<input type="submit" value="Send" onclick="Me.myFamily();"> 

此外,我正在寻找一种方式,用户可以添加或删除属性(其中的值)。

2 个答案:

答案 0 :(得分:2)

您的代码存在一些问题。

您已在此处使用变量

Family["fatherName"] = father,
Family["motherName"] = mother,
Family["sisterName"] = siter); // This should be sister by the way

在宣布他们之前

var father = document.getElementById("fatherId").value;
var mother = document.getElementById("motherId").value;
var sister = document.getElementById("sisterId").value; // Doesn't exist

尝试切换语句,以便首先声明变量。

此外,没有sisterId,您已使用fatherId两次。

你还在DOM准备好之前调用javascript。如果您正在使用jQuery,请将您的JS包装在

$(document).ready(function() { }

或者如果你想坚持使用普通的JS,试试

window.onload = function() { }

你必须更加明确myFamily应该做什么,因为你甚至没有提到过这种方法。

答案 1 :(得分:1)

Here是您示例的工作片段。

<input type="text" id="fatherId" />
<input type="text" id="motherId" />
<input type="text" id="sisterId" />
<input type="submit" value="Send" id="submit" />

<script>
    function Family(fatherName, motherName, sisterName) {

      this.fatherName = fatherName;
      this.motherName = motherName;
      this.sisterName = sisterName;

      this.myFamily = function() {
          alert("My father's name is " + this.fatherName + 
                ", my mother's name is " + this.motherName + 
                " and my sister's name is " + this.sisterName + ".");
      };

    }

    document.getElementById("submit").onclick = function() {
        var father = document.getElementById("fatherId").value;
        var mother = document.getElementById("motherId").value;
        var sister = document.getElementById("sisterId").value;

        Me = new Family(father, mother, sister);
        Me.myFamily();
    }
</script>

Brandon 总结了所有错误。

* 编辑:(对您的评论有效)

您的代码有两个与执行相关的问题。

  • <script>标记会立即执行,因此如果您在<input>部分之前插入脚本,则无法使用input元素进行检索。
  • 您想检索输入值,但这些输入包含用户点击submit时的数据,因此必须在.value()时使用onclick阅读。如果您尝试在onclick部分之外阅读它们,那么当输入字段为空时,会在页面加载期间立即访问它们。