2017-11-07 5 views
1

EDIT:value = "questions [questionNum] ['choices'] [i]」を挿入したいと思いますが、これを行う構文はわかりません。配列からボタンの値を追加する

多値配列の値を使用してボタンの値を変更したいと考えています。ラジオボタンで動作しましたが、今回は標準のボタンを使いたいと思います。

$('#showChoices').append('<input type="button" id="buttons">' + questions[questionNum]['choices'][i] + '</input>'); 

これは動作しますが、次にはありません:

$('#showChoices').append('<input type="button" id="buttons" value='"questions[questionNum]['choices'][i]"'></input>'); 

JSBin of the first

おかげ

+1

質問が何であるか......。あなたが他の場所で尋ねたようトン終わり

</input>を追加し、 ? –

+0

@cale_b関連する構文が見つかりません。ボタンに値を入力します。2番目のオプションは私が望むもののように見えますが、うまくいきません。 – Bonstark

答えて

4

あなただけのJavaScriptでvalue小道具を設定できるようにしたいですか?最初の例のように、値の後に文字列の連結を伴う値を追加するだけです。

$('#showChoices').append('<input type="button" id="buttons" value=' + questions[questionNum]['choices'][i] + '></input>'); 

それともたい場合は、template stringsを試みることができる:

彼らはあなただけの書き込みをバッククォートの代わりに、単一または二重引用符との代わりに、(+ 'sの)連結のを使用
$('#showChoices').append(`<input type="button" id="buttons" value=${questions[questionNum]['choices'][i]}></input>`); 

あなたの例のような文字列のJavaScriptを直接 - しかしそれはラップする必要があります${}

+0

あなたはこの回答を**アップではない** ** "コードのみの"答えではありません。あなたが何をしたのか、その仕組み、理由などを少し説明してください。 –

+0

パーフェクト、ありがとう、私は答えに変わります。 – Bonstark

+0

それが役に立つと思うが、私は確かにそれを感謝するだろう、私は推論を理解することができます。私は通常、二重引用符が必要だったと思っていましたが、私はそうではありません。私はプラスが必要だとは思わなかったが、私はした。 – Bonstark

1

これを試してみてください:

$('#showChoices').append('<input type="button" id="buttons" value="'+ questions[questionNum]['choices'][i] +'"/>'); 
1

文字列連結を使用して値を追加する必要があります。また、idはユニークでなければならないので、私はあなたのidに選択肢のインデックスを追加して一意にしています。

var questions = {'questionNum' : {'choices' : ['foo', 'bar'] }}; 
 
for(var i = 0; i < questions.questionNum.choices.length; ++i) { 
 
    $('#showChoices').append('<input type="button" id="buttons'+[i]+'" value="' + questions.questionNum.choices[i] +'"></input>'); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id='showChoices'></div>

+0

ありがとう、私は構文を知らなかった。 samVKとは対照的に "" ""を使用する利点がありますか? – Bonstark

+1

私は何も表示されません、私はあなたのコードを質問からコピーし、それを修正しました。 –

+0

返事をありがとう。 – Bonstark

1

あなたが知っているあなたは

$('#showChoices').append('<input type="button" id="buttons" name="buttons" value='+butVal+'></input>'); 
+0

ありがとうございます。何らかの理由で選択肢を作成する前に値を変数にするのが望ましいでしょうか? – Bonstark

1

を必要とするもの。これは、この質問に答えるの後、私は助けることはできませんが、我々はすべてのトンネルビジョンを持っていた感じ。おそらく大したことではないかもしれませんが、jQueryを使用している場合は、最初に文字列連結ではなくattr()メソッドを使用する必要があります。だから、:

$('<input type="button" id="buttons">').attr('value', questions[questionNum]['choices'][i]).appendTo('#showChoices');

は、私はおそらく書きたいものを実際にされています。 (私は両方の特性がちょうど1行を許可するチェーンに私を許可するようにappendTo`にappendを変更


私も気づいた:input要素はクローズしないでください - それはあなたがドン意味する「自己閉鎖」タグです。 。そうです、reababilityのために、私は変数にすべてのそのコードを救う:

const choice = questions[questionNum]['choices'][i]; // maybe even break this down into several variables. It's quite deep 
$('<input type="button" id="buttons">').attr('value', questions[questionNum]['choices'][i]).appendTo('#showChoices'); 
+0

問題を再訪する時間をいただき、ありがとうございます。私は一般的にプログラミングするのが初めてです。学ぶのはすごくたくさんあります。 多くの場合、同じ問題の解決策があります。この状況でjQueryを使用するのがベストプラクティスと考えられますか? – Bonstark

+1

@userabuserconfuserすでにjQueryを使用しているので、私はそれを書いています。それを超えると、あなたは1)vanilla JS DOM操作、2)jQuery、3)ReactやAngularなどの現代的なフレームワークを使用する必要があるかどうか本当に尋ねています。それは他の人たち(GoogleのjQuery対Vanilla JavaScript対Reactなど)によって解決された質問です。簡単な答えはjQueryが途中にありますが、おそらく長年ではなく、試して真実で、おそらく最も簡単です最初にウェブサイトをいじるとき把握する。しかし、あなたは最高の出発ルートが何であるかについて、いろいろな意見を得るでしょう。 – SamVK

関連する問題