2016-12-16 9 views
-2

の配列への入力の値は、私はすでに試したどのようなことを、文字の配列に返された値を分割:スプリット私はクリック上の入力の値を取得したい文字

window.onload = function() { 
 
    var textonaut = { 
 
    text: '', 
 
    letters: [] 
 
    }; 
 
    textonaut.text = document.getElementById('textonaut-text').value; 
 
    var go = document.getElementById('go-button'); 
 
    go.addEventListener('click', function(e) { 
 
    e.preventDefault(); 
 
    textonaut.letters = textonaut.text.split(''); 
 
    for(var i = 0; i < textonaut.letters.length; i++) { 
 
     console.log(textonaut.letters[i]); 
 
    }; 
 
    }); 
 
}
<input id="textonaut-text" type="text"><button id="go-button">go</button>

なぜこれが機能しないのかわかりません。

+0

がtextonaut変数が定義されていないtextonaut.text'、この変数を宣言するグローバル – iHasCodeForU

+4

[どのように私は私のJavaScriptコードをデバッグすることができますか?]の可能な重複(http://stackoverflow.com/questions/988363/how-can-i-debug-my-javascript-code) – Liam

+5

あなたは悲しくて怒っています。 [ask]と[mcve]の作成方法を読んでください。 – Idos

答えて

0

addEventListenerコールバックにtextonaut.text = document.getElementById('textonaut-text').value;を入れます。そうすればうまくいくはずです。

window.onload = function() { 
 
    var textonaut = { 
 
    text: '', 
 
    letters: [] 
 
    }; 
 

 
    var go = document.getElementById('go-button'); 
 
    go.addEventListener('click', function(e) { 
 
    e.preventDefault(); 
 
    textonaut.text = document.getElementById('textonaut-text').value; 
 
    textonaut.letters = textonaut.text.split(''); 
 
    for(var i = 0; i < textonaut.letters.length; i++) { 
 
     console.log(textonaut.letters[i]); 
 
    }; 
 
    }); 
 
}
<input id="textonaut-text" type="text"><button id="go-button">go</button>

あなたは、コールバックの外textonaut.textの値を設定した場合、それは(この値は時にJSファイルのロード設定されている)に関係なく、何が起こるか''として残っていないだろう。

ボタンのclickごとに、addEventListenerのコールバック関数がトリガーされます。つまり、clickごとにtextonaut.textの値がinputのすべての値に設定されます。

詳細については、addEventListenerのドキュメントを参照してください。

+0

はい、これが答えです。なぜそれが他の方法で動作しないのか説明できますか? – Timo

+0

大丈夫です...あなたのおかげで、Zakaria Acharkiが答えを出しました! – Timo

+0

'textonaut.text'の値を' window.onload'イベントが終了したときに 'text'auto.text'値を' go'クリックイベントの中で動かすことで 'textonaut.text'値を入力フィールドのテキスト「go」をクリックするたびに –

0

あなたは前にクリックしないで後に入力値を取得し、その行に置く必要があります。コールバックの内側に

textonaut.text = document.getElementById('textonaut-text').value; 

を。

注:あなたのOPで今書かれたようdocument.getElementById('textonaut-text').valueは常に「」空の文字列を返します。 `で

window.onload = function() { 
 
    var textonaut = { 
 
    text: '', 
 
    letters: [] 
 
    }; 
 

 
    var go = document.getElementById('go-button'); 
 
    go.addEventListener('click', function(e) { 
 
    e.preventDefault(); 
 

 
    textonaut.text = document.getElementById('textonaut-text').value; 
 
    textonaut.letters = textonaut.text.split(''); 
 
    for(var i = 0; i < textonaut.letters.length; i++) { 
 
     console.log(textonaut.letters[i]); 
 
    }; 
 
    }); 
 
}
<input id="textonaut-text" type="text"><button id="go-button">go</button>