获取输入值作为构造函数的参数 - Javascript

时间:2016-06-11 15:11:44

标签: javascript class input

我正在构建下面的Javascript代码,主要用于练习。我是JS的新手,没有任何建立大型项目的经验,因此我将其作为一种超越初学者阶段并编写更有用/更有趣的代码的方式。 / p>

我想知道,如何从viewTemplate()类的输入字段中获取值,然后将其传递给myo()类的name参数?请参阅代码:

function Hero(name) {
    this.name = name;

    // all the methods normally live here ....

}

function viewTemplate() {
    this.template = document.querySelector('.stage');

    this.textInput = function(id, label) {
        this.label = document.createElement('label');
        this.label.setAttribute("for", id);
        this.label.innerHTML = label;
        this.input = document.createElement('input');
        this.input.setAttribute('type', 'text');
        this.input.setAttribute('value', '');
        this.input.setAttribute('id', id);
        this.template.appendChild(this.label);
        this.template.appendChild(this.input);
    }   

}


// Test cases
// Create a new template
var template = new viewTemplate();
template.textInput("form1", "Enter your name, oh heroic one!");

// Create a hero
var hero = new Hero("Ryan");

这是一个jsfiddle:https://jsfiddle.net/ray_silver/2jd6e7cr/

我是以正确的方式来做这件事的吗?我想从输入字段中获取值,当我按Enter键时,它应该将输入的值作为英雄的名称。

1 个答案:

答案 0 :(得分:0)

您可以使用Javascript中实现的事件侦听器。例如,这段代码可以添加到脚本的末尾。

var inputs = document.getElementsByTagName('input')[0]; 
inputs.addEventListener('keypress', function(e){    // keypress event
    var key = e.which || e.keyCode;  // determining which was pressed
    if (key === 13){                 // checking if the key pressed is Enter (keyCode 13 is Enter)
        hero.name = inputs.value;    // assigning input value to the object
        console.log(hero.name);      // testing
    }
});