2014-06-19 6 views
0

Wordpress에서 Woocommerce를 실행하고 있습니다. "Add New Field (새 필드 추가)"버튼을 클릭하면 새 필드를 표시하려고 할 때 Safari에서 SyntaxError: Unexpected EOF이 나타납니다. 그리고 Firebug에서 나는 다음과 같은 오류 메시지를 보게됩니다.도움이 필요하십니까 예기치 않은 EOF 자바 스크립트 오류가 발생했습니다

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> 

나는 플러그인을 비활성화하고 다른 모든 자바 스크립트를 제거하여 충돌이 있는지 확인했지만 아무 것도 작동하지 않는 것 같습니다. 어떤 아이디어?

답변

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'; 
+0

선 (善) 오, 당신은 천재 야 :) – user5248

관련 문제