需要帮助调试意外的EOF Javascript错误

时间:2014-06-19 21:09:01

标签: javascript jquery wordpress debugging wordpress-plugin

我在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以查看是否存在冲突,但似乎没有任何效果。有什么想法吗?

1 个答案:

答案 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';