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