PHP / javascript中的switch语句返回'undefined'

时间:2013-07-26 09:12:27

标签: javascript switch-statement undefined

我有这个开关声明:

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>

但是当我查看它时,我只是在输入框之前得到“未定义”这个词而不是货币符号......

3 个答案:

答案 0 :(得分:0)

我不知道这里的row.currency是什么。 但我试过这个,它对我来说很好。

$(document).ready(function() {
 var currency = "";
 var row={currency:1};
 switch (row.currency) {
 case 1 :
         currency = "&pound;";
         break;
 case 2 :
         currency = " &#36;";
         break;
 case 3 :
         currency = "&euro;";
         break;

 default:
         currency = "&pound;";
          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 = ['&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;'

这样,上面的表达式将始终默认为PDO。但总的来说,我必须说你的代码对我来说很奇怪。这是温和的。您似乎在JavaScript中生成HTML,这可能会在客户端运行。使用PHP时生成HTML(正如你的标题暗示你使用的是PHP)比你现在正在做/尝试做的任何事情要好得多。

假设您使用$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>'; }

查询数据库
{{1}}

那就是说,我真的无法确定你的案例中最好的方法是什么,因为你需要提供更多细节:你发布的代码应该在哪里运行,它应该做什么...... ?