想要使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();">
此外,我正在寻找一种方式,用户可以添加或删除属性(其中的值)。
答案 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
部分之外阅读它们,那么当输入字段为空时,会在页面加载期间立即访问它们。