8

私は奇妙なエラーが発生している以下のコードを持っています。

   function export_to_excel()

     {

    results_html = $('report_excel').innerHTML;
    results_html = '<html><body><table  align="center" cellspacing="0" cellpadding="0" width="100%"><tr><td colspan="9"><b>Employee Salary Register </b></td></tr><tr><td colspan="9"></td></tr>' + results_html + '</table></body></html>';
    var input = new Element('input', {
        'type': 'hidden',
        'name': 'results[html]',
        'value': results_html
    });
    var form = new Element('form', {
        'method': 'post',
        'name': 'Employee Salary Register',
        'action': "html_to_excel"
    });
    form.insert(input);
    document.body.appendChild(form);
    form.submit();
}

この行でエラーが発生しています

results_html = '<html><body><table  align="center" cellspacing="0" cellpadding="0" width="100%"><tr><td colspan="9"><b>Employee Salary Register </b></td></tr><tr><td colspan="9"></td></tr>' + results_html + '</table></body></html>';

編集:

その行を指しているFirebugのコンソールにエラーが表示されています 。スクリーンショットを添付しました

スクリーンショット

2 つのボタン (印刷とエクスポート) の下に、コードが画面に表示されていることがわかります。これらのコード行は関数の一部です。export_to_excel()

私のローカルサーバーでも完全に機能します。私はPrototypeJSを使用しています。誤解を招き、遅れて申し訳ありません。

どんな助けでも大歓迎です

4

6 に答える 6

3

以下のコードを実装しましたが、うまく機能します最初に、この行で最初にID/クラスを定義しますresults_html = $('report_excel').innerHTML;

function export_to_excel(){

    results_html = $('report_excel').innerHTML;
    results_html = "<html><body><table  align='center' cellspacing='0' cellpadding='0' width='100%'><tr><td colspan='9'><b>Employee Salary Register </b></td></tr><tr><td colspan='9'></td></tr>" + results_html + "</table></body></html>";
    var input = new Element('input', {
        'type': 'hidden',
        'name': 'results[html]',
        'value': results_html
    });
    var form = new Element('form', {
        'method': 'post',
        'name': 'Employee Salary Register',
        'action': "html_to_excel"
    });
    form.insert(input);
    document.body.appendChild(form);
    form.submit();
}
于 2014-01-29T11:53:11.250 に答える
2

問題は、results_html コンテンツ内の引用符にあります。

jQuery を使用しているようですが、 (1) 次の場合:

results_html = $('report_excel').innerHTML;
results_html_container = $('<html><body><table  align="center" cellspacing="0" cellpadding="0" width="100%"><tr><td colspan="9"><b>Employee Salary Register </b></td></tr><tr><td colspan="9"></td></tr>' + results_html + '</table></body></html>';
results_html_container.html(results_html);

2.そうでない場合: コンテンツ内の一重引用符をエスケープします。

   results_html = $('report_excel').innerHTML;   
   results_html = '<html><body><table  align="center" cellspacing="0" cellpadding="0" width="100%"><tr><td
   colspan="9"><b>Employee Salary Register </b></td></tr><tr><td
    colspan="9"></td></tr>' + results_html.replace(/'/g, "\\'"); +
    '</table></body></html>';
于 2014-02-03T06:06:39.737 に答える
2

単なる提案: 行を次のように変更します。

results_html = '<html><body><table  align="center" cellspacing="0" cellpadding="0" width="100%"><tr><td colspan="9"><b>Employee Salary Register </b></td></tr><tr><td colspan="9"></td></tr>' + results_html + '</table></body></html>'

results_html = "<html><body><table  align='center' cellspacing='0' cellpadding='0' width='100%'><tr><td colspan='9'><b>Employee Salary Register </b></td></tr><tr><td colspan='9'></td></tr>" + results_html + "</table></body></html>";

"'に、またはその逆に置き換えました。これにより、おそらくエラーが取り除かれます。うまくいけば。

注: コメントで$('report_excel')は実際には tableId であると述べたので、id にアクセスする正しい jquery の方法は$("#report_excel") .. # を使用します。

于 2014-01-29T11:24:50.040 に答える
1

私はパーティーに遅れていることを知っていますが、同様の問題がありました。エラーをグーグルで調べてこれに到達した他の人のために、ここに修正を残します. 私はcdnでホストされたAngularへのローカルフォールバックを含めようとしていました:

<script> //THIS IS WRONG.
window.angular || document.write('<script src="bower_components/angular/angular.min.js"></script>');
</script>

それは、同じ未終了の文字列リテラル エラーをスローしていました。ドキュメント書き込み文字列の終了スクリプト タグがパーサーを停止させていたことが判明しました。引用された終了タグのスラッシュをエスケープするだけです。

<script> //correct version.
window.angular || document.write('<script src="bower_components/angular/angular.min.js"><\/script>');
</script>

帽子のヒント: HTML5 ボイラープレート プロジェクト。

于 2015-07-24T17:00:32.707 に答える