我在Wordpress上运行Woocommerce。我在Safari中获得了SyntaxError: Unexpected EOF
当我点击"添加新字段"当试图显示新字段时按钮。在Firebug中我得到了这个错误:
SyntaxError: unterminated string literal
var newRow = '\
这是与此错误相关联的脚本,我不知道如何修复它。
<script>
jQuery(document).ready(function(){
var newRow = '\
<tr>\
<td align="center">\
<select name="wc_custom_checkout_newfield[enabled][]">\
<option value="1">Yes</option>\
<option value="0">No</option>\
</select>\
</td>\
<td>\
<select name="wc_custom_checkout_newfield[section][]">\
<option value="billing">Billing</option>\
<option value="shipping">Shipping</option>\
<option value="account">Account</option>\
<option value="order">Order</option>\
</select>\
</td>\
<td>\
<select name="wc_custom_checkout_newfield[type][]">\
<option value="text">Text</option>\
<option value="textarea">Textarea</option>\
<option value="password">Password</option>\
<option value="date">Date</option>\
<option value="country">Country</option>\
<option value="state">State</option>\
<option value="select">Select</option>\
<option value="checkbox">Checkbox</option>\
</select>\
</td>\
<td><input name="wc_custom_checkout_newfield[label][]" type="text" value="New Field Label" /></td>\
<td>\
<input name="wc_custom_checkout_newfield[field_name][]" type="hidden" value="newfield" />\
<input name="wc_custom_checkout_newfield[field_name][]" type="text" value="newfield" disabled="disabled" />\
</td>\
<td><input name="wc_custom_checkout_newfield[placeholder][]" type="text" value="New Field" /></td>\
<td><input name="wc_custom_checkout_newfield[class][]" type="text" value="form-row-wide" size="12" /></td>\
<td><input name="wc_custom_checkout_newfield[options][]" type="text" value="" size="12" /></td>\
<td><input name="wc_custom_checkout_newfield[order][]" type="text" value="" size="6" /></td>\
<td align="center">\
<select name="wc_custom_checkout_newfield[required][]">\
<option value="1">Yes</option>\
<option value="0">No</option>\
</select>\
</td>\
<td align="center">\
<input name="wc_custom_checkout_newfield[default][]" type="hidden" value="0" />\
<input id="removeRow" type="button" value="X" title="remove this row">\
</td>\
</tr>';
jQuery('#addRow').click(function(){
jQuery('#block').append(newRow);
reIndex();
})
jQuery('#removeRow').live('click', function(){
jQuery(this).closest('tr').remove();
reIndex();
})
function reIndex(){
jQuery('#block').find('.index').each(function(i){
jQuery(this).html(i+2);
})
}
})
</script>
我尝试禁用插件,并删除所有其他javascript以查看是否存在冲突,但似乎没有任何效果。有什么想法吗?
答案 0 :(得分:2)
摆脱所有这些双重换行符。
引用字符串(var newRow = '...';
)中每行末尾的反斜杠字符为line continuation markers。这些信号通知Javascript解析器,以下行是当前行的延续。实际上,反斜杠后跟换行符都将被忽略。
但是因为你以某种方式将每个换行符转换为两个换行符(可能是通过使用Windows \r\n
换行符保存文件),所以你破坏了连续性,以便Javascript无法解析字符串。
例如:
// This is fine:
var string1 = 'This string is split \
across two lines';
// ... but this is not:
var string2 = 'This string is split \
across three lines';