一連の変数の値を指示するために使用したいラジオ ボタン オプションを含むフォームがあります。
ラジオボタンは次のとおりです。
<table style="width:90%">
<tr><td><input type="radio" id="opt1" name ="selectOpt" value="option1"
checked="checked"/> Option 1</td><td><input type="radio" id="opt2" name ="selectOpt"
value="option2"/> Option 2</td></tr>
</table>
ラジオボタンの値をエコーすることができます
<p id="selection">
<?php echo $_POST["selectOpt"];?></p>
したがって、変数が引き継がれていることは確かです。$_POST 値を要素に渡して、ユーザーがどの値が選択されたかを確認できるようにしているので、要素 ID を使用して if-else ステートメントの値を取得することにしました。
これが私の if-else ステートメントの外観です。
$(document).ready(function () {
var template = $("#selection").text();
if(template == 'option1'){
var part1 = "beautifulweather";
var part2 = "ishouldgooutside";
}
else if(template == 'option2'){
var part1 = "isthatrain";
var part2 = "imstayinginside";
}
weather = "www.weather.com/" + part1 + "ithink" + part2;
次に、次の行を含む空の href を持つボタンにこの URL を渡します。
var a = document.getElementById('weatherbtn');
a.href = weather;
ただし、リンクをクリックするたびに、part1 と part2 が未定義として表示されます。if-else の後に document.write(template, part1, part2) を使用し、option1undefinedundefined が出力されることを確認しました。
ここで何が間違っていますか?
解決した
変更が必要な一般的なフォーマットの問題 (ここにいるほぼ全員が指摘しているように): 最初に変数を宣言し、if-else ステートメント (part1/part2) で割り当てられている変数から var キーワードを削除する必要がありました。
私もバイパスしました
要素を作成し、エコーをテンプレート変数に直接渡しました。作業コードは次のようになります。
$(document).ready(function (){
var part1, part2, template;
var template = '<?php echo $_POST["selectOpt"];?>';
if(template == 'option1'){
part1 = "beautifulweather";
part2 = "ishouldgooutside";
}
else if(template == 'option2'){
part1 = "isthatrain";
part2 = "imstayinginside";
}
天気 = "www.weather.com/" + part1 + "ithink" + part2;
みなさん、特に cdhowie さん、JS がブロック スコープではないというメモをくれてありがとう。それは私を夢中にさせていました。