Javascript OOP:通过输入将值传递给属性失败
Javascript OOP: Passing a value to property through input fails
我现在正在学习和训练js-op,但我遇到了一个问题。我想通过输入值将值从构造函数传递到属性。例如,如果用户想制作自己的角色,他必须输入姓名、年龄等……但我的代码失败了。这是我的js和html代码。我在stackoverflow中寻找答案,但找不到任何问题的答案。
JS-
document.addEventListener("DOMContentLoaded", function() {
var button = document.getElementById('action');
var nameInput = document.getElementById('charName').value;
var ageInput = document.getElementById('age').value;
var par = document.getElementById('result');
function Person(name,age){
this.name = name;
this.age = age;
}
var first = new Person(nameInput,ageInput);
button.addEventListener('click',function(){
par.innerHTML = first.name + ' ' + first.age;
});
});
HTML:
<h1>Javascript Found</h1>
<button id="action">Action</button>
<div id="holder">
<p>
Give a name:<input type="text" id="charName" placeholder="Enter a name">
</p>
<p>
Enter age: <input type="text" id="age" placeholder="Enter a number(0-100)">
</p>
<p id="result"></p>
</div>
我假设click监听器执行正确,但first.name和first.age的值为''。您可以通过在click监听器中放入console.log(第一个)来验证这一点。
那为什么呢?在触发DOMContentLoaded侦听器时,两个输入都为空(值==")。现在,您将这些值复制到Person的实例中。接下来,您等待在某个时刻触发的单击事件,但实例中的name和age值没有更新,因此它们仍然是"。所以您设置了par.innerHTML=''。
您需要做的是,在设置par.innerHTML.
您需要在点击时从输入中获取值,否则它将使用空字符串的旧值。
我更改了代码,使nameInput
和ageInput
引用元素,然后在Person
类中获取值,并在单击时创建first
。
请参阅JSFiddle以查看其工作情况。
var button = document.getElementById('action');
var nameInput = document.getElementById('charName');
var ageInput = document.getElementById('age');
var par = document.getElementById('result');
function Person(name,age){
this.name = name.value;
this.age = age.value;
}
button.addEventListener('click',function(){
var first = new Person(nameInput, ageInput);
console.log(first);
par.innerHTML = first.name + ' ' + first.age;
});
相关文章:
- 如何将输入范围的值传递给JS中的变量
- 如何将值传递给wicket中的javascript函数
- 将值传递给jquery创建的输入字段
- 需要将select标记选项值传递给ajax函数
- 使用Ajax将PHP值传递给javascript
- 将javascript值传递给PHP
- 将javascript值传递给php是正确的方法
- 将不属于表单的HTML页面中的值传递给php页面
- Angular,将文本框的动态值传给控制器
- 在key up函数上将文本框值传递给javascript
- 可以't使用ajax调用将值传递给Web服务
- simple_form添加没有值的属性
- 如何使用JavaScript在JSP页面上从下拉列表中呈现选定值的属性
- 如何在同一页面上使用windows.location.href将js值传递给php时停止刷新页面
- 多个单选按钮,需要将选定的值传递给javascript
- 将 MSSQL 表值传递给 javascript
- 如何将剃刀视图模态属性值传递给javascript函数
- 如何将值传递给 href 属性和目标
- 如何通过class属性将值传递给Angular指令
- 如何将下拉菜单的值传递给instafeed tagName属性