2016-11-01 10 views
0

私はいくつかの入力を生成しており、それぞれにイベントリスナーを追加しています。ここで値を変更してイベントリスナーを追加

は私が持っているもの:

for (var i = 0; i < 3; i++) { 
    var input = document.createElement("input"); 
    document.body.appendChild(input); 
    random = Math.floor((Math.random() * 100) + 1); 
    this.input.value = random; 
    input.addEventListener('focus', function(e) { 
    this.value += random * 2; 
    }) 
} 
+0

を働いて上記のコードを試してみましたが、あなたはそれに問題があるように思われるものを、いくつかのコードを添付しましたか? – Itay

+2

'this.value = this.value * 2;'を意味しますか? –

+0

はい、それは私が言ったことです、私の間違い。 – Bybnovskiy

答えて

1

inputvalueが常に文字列です。 +は、そのオペランドのいずれかが文字列の場合に文字列の連結を行います。

だから、数としてそれを使用するvalueを解析したいと思う:私は数にthis.valueを強制する+を使用している、という点で

for (var i = 0; i < 3; i++) { 
 
    var input = document.createElement("input"); 
 
    document.body.appendChild(input); 
 
    random = Math.floor((Math.random() * 100) + 1); 
 
    this.input.value = random; 
 
    input.addEventListener('focus', function(e) { 
 
    this.value = +this.value + random * 2; 
 
    }) 
 
}

。その他のオプションは、parseInt,parseFloat、およびNumberです。

しかし、私はあなたのコードが何を試したことのないものだ各それら

に焦点を当てていたときに、値* 2を高めるためにどのように

を言いました。あなたのコードは に、 random * 2を追加しようとしました。ちょうどそれを倍にするには、それをダブル:私はまだ強調のために +を使用していますがあり

for (var i = 0; i < 3; i++) { 
 
    var input = document.createElement("input"); 
 
    document.body.appendChild(input); 
 
    random = Math.floor((Math.random() * 100) + 1); 
 
    this.input.value = random; 
 
    input.addEventListener('focus', function(e) { 
 
    this.value = +this.value * 2; 
 
    }) 
 
}

が、*は数にそのオペランドを強制されますので、this.value *= 2も働くだろう。

1
for (var i = 0; i < 3; i++) { 
    var input = document.createElement("input"); 
    document.body.appendChild(input); 
    random = Math.floor((Math.random() * 100) + 1); 
    this.input.value = random; 
    input.addEventListener('focus', function(e) { 
    this.value *= 2; 
    }) 
} 

私はそれが私のために

関連する問題