2016-03-29 8 views
2

私は、IDS nameageとの2つの入力を作成して、私はデータはJavaScriptのoninputを使用してそれらに挿入されたかどうかを確認しようとしてきた、それはageのために働いたがnameのために、私が間違って何をしていませんか?javascriptで2つの "oninput"リスナーを使用できないのはなぜですか?

var name = document.getElementById('name'); 
 
var age = document.getElementById('age'); 
 
age.oninput = function() { 
 
    console.log('age'); 
 
    return true; 
 
}; 
 
name.oninput = function() { 
 
    console.log('name'); 
 
    return true; 
 
};
<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <title>clerf</title> 
 
</head> 
 

 
<body> 
 
    <div id="main"> 
 
    <input type="text" id="name" /> 
 
    <input type="number" id="age" /> 
 
    </div> 
 
</body> 
 

 
</html>

+1

代わりにイベントリスナーを添付してください – ElGavilan

+0

@ElGavilanありがとうございます。なぜこれが起こっているのか、なぜ2つの 'oninput'を使用できないのかを知りたいです。 – Kyle

+3

' name'以外のIDを使ってみてください。私はそれが予約されているか、またはWindowオブジェクトにディブがあると思います。 – j08691

答えて

6

name already existsからです。それに別の名前をつけてください。うまくいくでしょう。

var nameEl = document.getElementById('name'); 
 
var age = document.getElementById('age'); 
 
age.oninput = function() { 
 
    console.log('age'); 
 
    return true; 
 
}; 
 
nameEl.oninput = function() { 
 
    console.log('name'); 
 
    return true; 
 
};
<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <title>clerf</title> 
 
</head> 
 

 
<body> 
 
    <div id="main"> 
 
    <input type="text" id="name" /> 
 
    <input type="number" id="age" /> 
 
    </div> 
 
</body> 
 

 
</html>

+2

'window.name'はポップアップ(' open() 'に渡す)やiframe(' name = "something" '属性を介した)に与えられた名前です、すべての' window'sはデフォルトでは'' ''。 'window.name'もまた文字列でなければならず、リロードの間に持続し、同じタブをリサイクルしている別のサイトに残されます。 – dandavis

+0

オハイオ州の男、私はそれを知りませんでした、返信+1 – Kyle

0

名(window.nameのように)windowの既存のプロパティキーワードのようですので、それが既に取られています。

nameElに変更し、それを、それが彼らのコメントのための@Xufoxと@DanDavisへ

(コメントに基づいて更新)

var nameEl = document.getElementById('name'); 
 
var ageEl = document.getElementById('age'); 
 

 
nameEl.oninput = function() { 
 
    console.log('name'); 
 
    return true; 
 
}; 
 

 
ageEl.oninput = function() { 
 
    console.log('age'); 
 
    return true; 
 
};
<div id="main"> 
 
    <input type="text" id="name" /> 
 
    <input type="number" id="age" /> 
 
</div>

PS おかげで動作します

+1

'name'は間違いなくキーワードではありません。それは再定義することができない 'window'プロパティです。 – Xufox

+1

@Xufox:window.nameは任意の文字列に再定義することができます。クロスドメイン "name transport"です:window.open(someOffSiteUrl、some secret ")'、ポップアップ: 'alert(name)' – dandavis

+0

おかげさ...おそらく「キーワード」は言葉の貧しい選択でした - 私は既存のプロパティ名を意味しました - 私の答えを更新しますFWIW – ochi

関連する問題