我已经在这段代码中苦苦挣扎了好几天。本质上,它是一个对象,它接受3个文本框的输入并将它们连接成一个字符串..或者它应该做什么。
Student.toString返回未定义或“未捕获的TypeError:对象[对象对象]的属性'学生'不是函数”,它应该是姓氏,名字和身份编号。谁能解释我在这方面做错了什么?
<div id='textInside'>
First Name:<input type='text' id='fName'><br>
Last Name:<input type='text' id='lName'><br>
Student Id: <input type='text' id='stuId'><br>
<button onclick='readInputs()'>Update</button>
<p id='stuInfo'></p>
</div>
<script type='text/javascript'>
var fiName = document.getElementById('fName');
var laName = document.getElementById('lName');
var studeId = document.getElementById('stuId');
var toP = document.getElementById('stuInfo');
var Student = new Object;
function Student() {
this.firstName = fiName;
this.lastName = laName;
this.studentId = studeId;
this.toString = function() {var result = toP.innerHTML = this.lastName + this.firstName + this.studentId};
return result;
this.readInputs = function() { };
}
function readInputs() {
Student();
Student.toString();
}
</script>
答案 0 :(得分:3)
这里有很多错误。
var Student = new Object;
function Student() {
this.firstName = fiName;
this.lastName = laName;
this.studentId = studeId;
this.toString = function() {var result = toP.innerHTML = this.lastName + this.firstName + this.studentId};
return result;
this.readInputs = function() { };
}
首先,请使用{}
,而不是new Object
。接下来,这只会将Student
设置为new Object
并覆盖您的函数,因为该函数已挂起。我很确定你只是想在那里拥有一个功能。
接下来,return result;
不在您的toString
功能中,这是一个错误,而且不是您报告的那个。这实际上是你的代码吗?也使用原型。并且toString
不应该有副作用,构造函数不应该读取全局变量。
function Student(firstName, lastName, studentId) {
this.firstName = firstName;
this.lastName = lastName;
this.studentId = studentId;
}
Student.prototype.readInputs = function() {};
Student.prototype.toString = function() {
return this.lastName + this.firstName + this.studentId;
};
现在readInputs
看起来像这样(顺便说一下,它与Student
上的空函数有关吗?):
function readInputs() {
var s = new Student(fiName.value, laName.value, studeId.value);
toP.innerHTML = s.toString();
}
请注意,您必须使用new
和构造函数来正确创建this
,并获取输入元素的value
属性,并实际使用函数的返回值执行某些操作。
此错误:
对我来说似乎不可能,但我可能会错过一些东西。 (你在使用IE8吗?)Uncaught TypeError:Property&#39; Student&#39;对象[object Object]不是函数
答案 1 :(得分:0)
尝试更改此
var student = new Student(fiName,laName,studeId);
var res = student.toString();
function Student(fiName,laName,studeId) {
this.firstName = fiName;
this.lastName = laName;
this.studentId = studeId;
}
Student.prototype.toString = function() {
return this.lastName + this.firstName + this.studentId
}
上面是面向对象的java脚本代码的示例。我定义了一个Student构造函数,并在新的Student类型上定义了一个toString方法。 建议将您的方法添加到原型链中,以便将它们绑定到类型而不仅仅是特定实例。
答案 2 :(得分:0)
<div id='textInside'>
First Name:<input type='text' id='fName'><br>
Last Name:<input type='text' id='lName'><br>
Student Id: <input type='text' id='stuId'><br>
<button onclick='readInputs()'>Update</button>
<p id='stuInfo'></p>
</div>
<script type='text/javascript'>
var fiName = document.getElementById('fName');
var laName = document.getElementById('lName');
var studeId = document.getElementById('stuId');
// Where is <node id="stuInfo" /> defined?..
var toP = document.getElementById('stuInfo');
function Student() {
this.firstName = fiName.value;
this.lastName = laName.value;
this.studentId = studeId.value;
this.toString = function() {
var result = toP.innerHTML + this.lastName
+ this.firstName + this.studentId
return result;
};
}
function readInputs() {
var a_student = new Student();
alert(a_student.toString());
}
</script>
答案 3 :(得分:0)
获得元素id后,应该输入.value。因为你可以得到一个元素的id而不是它的值。
var fiName = document.getElementById('fName').value;
这样可以让你的变量有一个值。
答案 4 :(得分:-3)
要实例化对象,您必须使用单词new
由于您生成学生,您必须将构造函数
作为参数代码应如下所示
<div id='textInside'>
First Name:<input type='text' id='fName'><br>
Last Name:<input type='text' id='lName'><br>
Student Id: <input type='text' id='stuId'><br>
<button onclick='readInputs()'>Update</button>
<p id='stuInfo'></p>
</div>
<script type='text/javascript'>
var Student = function( option ) {
this.firstName = option.fiName;
this.lastName = option.laName;
this.studentId = option.studeId;
this.top = option.top;
};
Student.prototype.toString = function(){
return document.write(this.lastName +" "+ this.fastName +" "+ this.studentId);
};
function readInputs() {
var student = new Student({
fiName: document.getElementById('fName').value.trim(),
laName: document.getElementById('lName').value.trim(),
studeId: document.getElementById('stuId').value.trim(),
top: document.getElementById('stuInfo').value.trim()
});
student.toString();
}
</script>