Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获的语法错误:意外标记(_Javascript - Fatal编程技术网

Javascript 未捕获的语法错误:意外标记(

Javascript 未捕获的语法错误:意外标记(,javascript,Javascript,尝试在页面test.html中使用以下代码: <script language = "javascript"> function test() { if (typeof a != "undefined") { document.body.innerHTML = ""; document.write(a); } else { document.body.innerHTML = "";

尝试在页面test.html中使用以下代码:

<script language = "javascript">
function test()
{
    if (typeof a != "undefined")
    {
        document.body.innerHTML = "";
        document.write(a);
    }
    else
    {
        document.body.innerHTML = "";
        document.write("a is undefined");
    }
    var a = "a is defined";
    document.write("<br><br>");
    document.write("<a href='javascript:void(0)' onclick='function(){ test(a); }'>test</a>");
}
window.onload = function(){ test(); }
</script>

功能测试()
{
如果(a的类型!=“未定义”)
{
document.body.innerHTML=“”;
文件。编写(a);
}
其他的
{
document.body.innerHTML=“”;
文件。书写(“a未定义”);
}
var a=“a已定义”;
文件。写(“

”); 文件。填写(“”); } window.onload=函数(){test();}
导致错误“Uncaught SyntaxError:意外标记”(“。如何获取链接以清除页面并显示相应的变量?

onclick中的
函数(){test(a);}
是错误的原因

您需要使用
(function(){test(a);})
来获取函数表达式,而不是函数语句

但是,由于
a
不是全局的,并且*参数上的HTML
中的JavaScript不会创建闭包,因此代码仍然不起作用


下面是一个使用jQuery的示例:

function test(a) {
    if(a !== undefined) {
        $('body').html(a);
    }
    else {
        $('body').html('a is undefined');
    }
    var a = 'a is defined';
    $('body').append('<br /><br />');
    $('<a href="#">test</a>').click(function(e) {
        e.preventDefault();
        test(a);
    }).appendTo('body');
}

$(document).ready(function() {
    test();
});
功能测试(a){
如果(a!==未定义){
$('body').html(a);
}
否则{
$('body').html('a未定义');
}
变量a=‘a已定义’;
$('body')。追加('

'); $('')。单击(函数(e){ e、 预防默认值(); 测试(a); }).附于(“主体”); } $(文档).ready(函数(){ test(); });
当您省略language=“javascript”之间的空格时,它会改变吗?他的代码的问题(实际上是其中一个,而不是语法错误)是字符串中的函数没有创建闭包。哪一行显示包含错误?嗨,Andreas,如果您的意思是将language=“javascript”更改为language=“javascript”不,没有任何变化。SEI看不到您的错误,但我也看不到函数得到执行(在脚本开头添加警报没有任何作用)。因此我怀疑问题出在最后一行。也许我弄错了,但是
window.onload=test;
也不起作用(无括号)@马克:那么你不能确定没有传递任何参数。除此之外,document.ready会提前触发(只要DOM准备好)这通常是人们想要的-无需等待图像加载等。您认为有任何方法可以在普通Javascript中实现这一点吗?SEYes。但是代码将远不如jQuery好。而且,看看jQuery的小尺寸和许可证,应该没有理由不包括它。@Mark:这将把jQuery传递给测试,因为ready事件的第一个参数是全局jQuery函数。