var a = val 你定义了一个a变量接收val的值,然后又定义了一个b字符串,但这个字符串中存得是一个文本框类型的字符串,
然后你在这个文本框中调用了一个方法[获得焦点的方法],调用的是check函数,传了一个你定义的a的值过去。
因为你外边定义得是单引号,里面有双重双引号,转译一下,防止报错
html的双引号是正常的,每一个属性,例如:value="",一般都有双引号包着。但是用js添加页面节点的时候,需要转义,比如:var html = "<div onclick=\" openUrl( ' <s:url value='%{resUrl}'/>' ) \"></div>"
document.getElementById("main").innerHTML = html
最外面的那个双引号是表示一个字符串变量的意思,而被包在里面的双引号就不起作用,只有在页面显示的时候才会起作用,也就是说js不会认为第一个双引号和第二个双引号是一对,会认为</div>"这个双引号才是结尾,因为中间的被"\"转义了。
openUrl函数中的第一对单引号是表示字符串的意思,你省去也不会报错,中间那一对则是标签的属性需要。
最后的问题说明对struts的标签不熟,可以看下struts的property和ognl表达式,最多半个小时可学会。