2012-02-17 14 views
0

私はこのdivのすべてを作成し、innerHTMLを追加するこのコードをすべて持っています。その中で、XMLファイルから生成されたドロップダウンを追加したいと思います。 inner.HTMLの内部にタグを動的に作成することに問題があります。Javascript "undefined"出力の問題

これはすべて動的で、ユーザーは必要に応じて新しい要素を追加することになっています。だから、回避策として、私は物事が同じIDに対応するようにお互いに処理するvar値の束を持っています。

var opselectCounterA = '1'; 
var opselectCounterB = '1'; 
var selectCounter = '1'; 

追加したいタグは、内側にもあります.HTML。

something.innerHTML = "<select id='partSelect" + (selectCounter++) + "'>" + (loadOp) + "</select>"; 

var selectIDA = "partSelect" + opselectCounterA++; 
var selectIDB = "partSelect" + opselectCounterB++; 
var loadOp = selectIDA.addOption(); 

function addOption(){ 

    selectIDB.innerHTML = "<option>Please work.</option>"; 

} 

これは自分のHTMLページで処理されるたびに、タグ間に「未定義」と表示されます。

なぜですか?

答えて

2

あなたのコードにはかなりのものがあります(私はその一部しか見ていませんが)。ラインvar loadOp = selectIDA.addOption();について

...

  1. この行にはJavaScriptをselectIDAオブジェクト上に存在するaddOption()という名前の関数を実行しようと実行されます。しかし、selectIDA変数は、実際にはaddOption()関数を持たない文字列です。 javascriptは、selectIDAオブジェクトでaddOption()という名前の関数が見つからないため、loadOpの値をundefinedに設定します。
  2. さらに、var loadOp = addOption();を書き込んだとしても、は値を返さないため、loadOpの値は未定義です。

おそらく、あなたはこれらの線に沿ってより多くの何かを試してみてください...

// Function takes a select element and some text as args 
// then adds option elements to the select 
function addOption(select, optionText) { 
    var option = document.createElement("option"); 
    option.innerText = optionText; 
    select.appendChild(option); 
} 


var opselectCounterA = 1; 
opselectCounterA++; 

var selectIDA = "partSelect" + opselectCounterA; 

// Create the select element 
var selectA = document.createElement("select"); 
selectA.setAttribute("id", selectIDA); 

// Add options to that select element 
addOption(selectA, "My First Option"); 
addOption(selectA, "My Second Option"); 
addOption(selectA, "My Third Option"); 

// Add the select element to the body 
document.body.appendChild(selectA);​ 

ビューがjsFiddleの作業例:http://jsfiddle.net/Nxezs/

+0

だから、私は物事にまで読んでいると私は」 Javascriptを区別するのが難しく、HTML DOMで行われています。彼らは共生しているので、彼らはアプリケーションに絡み合っていますか?私がJavascriptライブラリのcreate.ElementやinnerHTMLのようなものを参照するために探していた問題は、DOMプロパティであることを知りましたか? addOptionの角括弧に "select、optionText"を入れることの意義は何ですか? – Plummer

+0

StackOverflowは実際にはこれらの基本的な概念を教える場所ではありません。あなたが読む時間を取るべき本当に良い本がいくつかあります。 http://www.amazon.com/dp/1590595335/ http://www.amazon.com/dp/0596101996/ – jessegavin

+0

クール、参考に感謝します。 – Plummer