我有这个开关声明:
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>
但是当我查看它时,我只是在输入框之前得到“未定义”这个词而不是货币符号......
答案 0 :(得分:0)
我不知道这里的row.currency是什么。 但我试过这个,它对我来说很好。
$(document).ready(function() {
var currency = "";
var row={currency:1};
switch (row.currency) {
case 1 :
currency = "£";
break;
case 2 :
currency = " $";
break;
case 3 :
currency = "€";
break;
default:
currency = "£";
break;
}
$('<td>'+currency+'<input type="text"> </td>').insertAfter("p");
});
可能是您row.currency
的问题。所以请再次检查或分享您的代码。
答案 1 :(得分:0)
从html代码中删除货币,并在向td
添加ID后将其添加到脚本代码中var txt = document.createTextNode(currency);
document.getElementById('tdID').appendChild(txt);
答案 2 :(得分:0)
作为对rps的回应,也是对OP问题的回答。我会避免使用switch
,而只是使用数组。由于row.currency
始终为1,2或3,因此您可以轻松地将包含相应值的数组指定给currency
:
var currency = ['£','£','$','€'];//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...';
字符串。为避免这种情况,只需执行以下操作:
'£'
这样,上面的表达式将始终默认为PDO
。但总的来说,我必须说你的代码对我来说很奇怪。这是温和的。您似乎在JavaScript中生成HTML,这可能会在客户端运行。使用PHP时生成HTML(正如你的标题暗示你使用的是PHP)比你现在正在做/尝试做的任何事情要好得多。
假设您使用$currency = array(1 => '£', 2 => '$', 3 => '€');
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>';
}
{{1}}
那就是说,我真的无法确定你的案例中最好的方法是什么,因为你需要提供更多细节:你发布的代码应该在哪里运行,它应该做什么...... ?