我想在身体上添加一个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
};+'
答案 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>');
然而,在我看来,你的一些逻辑有点偏。附加一个实际的脚本文件会更加简洁,确保您的代码保持可读性。