5
ボタンクリック時にフォームにドロップダウン<select>
を追加して削除しようとしています。これは私が現在持っているコードです。私は昨夜この仕事があったと誓っていたかもしれませんが、今朝私のプロジェクトでもう少し作業をすると、ドロップダウンが正しく追加/削除されませんでした。ドロップダウンを生成するJavaScript関数/ドロップダウンメニュー
function DropDowns(){
this.counter = 0;
this.addDropdown = function (divname) {
var newDiv = document.createElement('div');
var html = '<select name="cookie' + this.counter + '">', i;
for (i = 0; i < cookies_drop.length; i++) {
html += "<option value='" + cookies_drop[i] + "'>" + cookies_drop[i] + "</option>"
}
html += '</select>';
newDiv.innerHTML = html;
document.getElementById(divname).appendChild(newDiv);
this.counter++;
}
this.remDropdown = function() {
$('#dropdowns-container').find('div:last').remove();
this.counter--;
}
}
var dropsTest = new DropDowns();
HTML:
<form action='' method=post id="dropdowns-container">
<button id="add_cookie" type="button" onclick="dropsTest.addDropdown('dropdowns-container');">add cookie</button>
<button id="rem_cookie" type="button" onclick="dropsTest.remDropdown();">remove cookie</button>
<input name="cookies" type=submit value="submit">
</form>
'cookies_drop'は何? – Mikey
「正確に」とはどういう意味ですか?あなたはどんなふるまいをしていますか? "cookies_drop"とは何ですか?あなたは "カウンタ"をインクリメントしていますが、 "this.counter"を定義しました。また、dropTestは未定義です。なぜなら、 "var dropTest = new DropDowns();"を実行していないからです。 実際には、それはおそらく、あなたを台無しにしている「新しい」行方不明ですが、カウンタのロジックは、「this」の行方不明のために失敗します。 –
申し訳ありませんが、私は質問をクリアします。 cookies_dropは配列です。これは、phpページで宣言され、php配列はjson_encodeを使ってcookies_dropに "変換"されます。 cookies_drop配列は現在正しく読み込まれます。私が見ている動作は、「クッキーを追加」ボタンをクリックすると、新しいドロップダウンがフォームに追加されないということです。 「this.counter」問題を指摘していただきありがとうございます。私はコードを更新し、それがどうなるかを見ていきます。 – Csw