0

私はこのスイッチステートメントを持っています:

var currency = "";

switch (row.currency) {
case 1 :
    currency = "£";
    break;
case 2 :
    currency = " $";
    break;
case 3 :
    currency = "€";
    break;

default:
    currency = "£";
    break;
}

次に、currencyここを参照してみます。

<td>' + currency + '<input class="editinput number" type="text" value="' + row.adhoc_setup_rem_cost + '" name="changes[' + row.id + '][adhoc_setup_rem_cost]" /></td>

しかし、それを見ると、通貨記号の代わりに入力ボックスの前に「未定義」という単語が表示されます...

4

3 に答える 3

0

HTML コードから通貨を削除し、td に ID を追加した後、これをスクリプト コードに追加します。

var txt = document.createTextNode(currency);  
document.getElementById('tdID').appendChild(txt);
于 2013-07-26T10:03:41.080 に答える
0

rps への応答として、また OP の質問への回答としても。の使用を避け、switch代わりに単に配列を使用します。row.currencyは常に 1、2、または 3 であるため、対応する値を保持する配列を に簡単に割り当てることができますcurrency

var currency = ['&pound;','&pound;','&#36;','&euro;'];//default value is 0
//concat into string like so:
'<td>' + currency[+(row.currency) || 0] + '<inp...';

私がここで行っていることはrow.currency、数値に強制された場合、 が 3 より大きい値を生成しないことを前提としundefinedています。これを回避するには、次のようにします。

'<td>' + currency[+(row.currency)] || currency[0] + '<inp...';

そうすれば、上記の式は常にデフォルトで になり'&pound;'ます。ただし、全体として、あなたのコードは私には奇妙に見えると言わざるを得ません。そして、それは穏やかに言えばです。クライアント側で実行される可能性が高い JavaScript で HTML を生成しているようです。PHP を使用しているときに HTML を生成する (タイトルが PHP を使用していることを示しているように) ことは、現在行っている/行おうとしていることよりもはるかに優れています。

を使用してDBにクエリを実行すると仮定しますPDO

$currency = array(1 => '&pound;', 2 => '&#36;', 3 => '&euro;');
while($row = $stmt->fetch(PDO::FETCH_OBJ))
{
    $row->currency = isset($currency[$row->currency]) ? $row->currency : 1;//default 1
    echo '<tr><td>'. $currency[$row->currency].'</td>';
}

とはいえ、詳細を提供する必要があるため、あなたの場合の最善のアプローチが何であるかは本当にわかりません。投稿したコードはどこで実行する必要があり、何をする必要がありますか...?

于 2013-07-26T11:19:46.240 に答える