将<script>标记附加到body </script>中

时间:2015-02-11 11:53:33

标签: javascript jquery

我想在身体上添加一个js函数,但似乎无法做到。

我试过了:

$('body').append('<script>'+function PreviewImage2() {
                var oFReader = new FileReader();
                oFReader.readAsDataURL(document.getElementById("uploadImage2").files[0]);

                oFReader.onload = function (oFREvent) {
                    document.getElementById("uploadPreview2").src = oFREvent.target.result;
                };
            };+'</script>');

但是我收到以下错误:

SyntaxError: missing ) after argument list


};+'

3 个答案:

答案 0 :(得分:1)

$('body').append('<script>'+function PreviewImage2() {
            var oFReader = new FileReader();
            oFReader.readAsDataURL(document.getElementById("uploadImage2").files[0]);

            oFReader.onload = function (oFREvent) {
                document.getElementById("uploadPreview2").src = oFREvent.target.result;
            };
        }+'</script>');

在您的情况下,请尝试删除“;”在关闭脚本标记之前。

但是,更正确的变体是:

var script = document.createElement('script');
script.textContent = 'function PreviewImage2() {' +
    'var oFReader = new FileReader();' +
    'oFReader.readAsDataURL(document.getElementById("uploadImage2").files[0]);' +
    'oFReader.onload = function (oFREvent) {' +
        'document.getElementById("uploadPreview2").src = oFREvent.target.result;' +
    '}' +
'}';
document.body.appendChild(script);

答案 1 :(得分:0)

问题来自您要包含的<script>标记,这是浏览器的行为,您可以做一些小技巧来避免这种情况。

首先删除函数声明末尾的分号,然后用分割的<script>替换最后的$('body').append('<script>'+function PreviewImage2() { var oFReader = new FileReader(); oFReader.readAsDataURL(document.getElementById("uploadImage2").files[0]); oFReader.onload = function (oFREvent) { document.getElementById("uploadPreview2").src = oFREvent.target.result; }; }+'</scrip'+'t>');

{{1}}

答案 2 :(得分:-1)

您得到的错误是因为您正在混合字符串和实际的JavaScript代码。要做这样的事情,你必须追加一个字符串。试试这个:

$('body').append('<script>function PreviewImage2() { var oFReader = new FileReader(); oFReader.readAsDataURL(document.getElementById("uploadImage2").files[0]); oFReader.onload = function (oFREvent) { document.getElementById("uploadPreview2").src = oFREvent.target.result; }; };</script>');

然而,在我看来,你的一些逻辑有点偏。附加一个实际的脚本文件会更加简洁,确保您的代码保持可读性。