asp.net 中我让网页弹出一个 alert 框框,显示我之前代码中的字符 一开始我这么写:
Response.Write("<script> alert(<%=targetAnswer[seed]%>)</script>");
页面上什么都不显示,也不弹窗。
后来上网差了些资料,写法如下
Response.Write("<script> alert('"+targetAnswer[seed]+"')</script>");
请问为什么可以这么写呢?
为什么内层套了个"",并且用+连接就可以了呢?
1
virusdefender 2016-09-10 17:46:59 +08:00 via iPhone
右键查看源代码就明白了
|
2
YuJianrong 2016-09-10 17:51:17 +08:00
问题质量好差,扣 10 分。
这标题什么鬼?完全不知道问的是什么语言什么环境。 |
3
jugelizi 2016-09-10 18:12:30 +08:00
js 是 alert('alert 一下')
不是 alert(alert 一下) 这样会报错 |
4
sweetcode OP |
5
sweetcode OP @virusdefender
@YuJianrong 琢磨了一下明白了 3 楼大大的回复,可是仍有一事不明,"+targetAnswer[seed]+" ,此处双引号后面的+是代表连接符吗?可是他是根据什么来判断是连接符还是普通的我要输出的“加号”的呢? |
6
virusdefender 2016-09-10 18:53:08 +08:00 via iPhone
@sweetcode 感觉你需要补一下编程基础了
|
7
sweetcode OP @virusdefender 对 js 不是很了解,以前只学过 java 和 c++,这学期选修了一门 asp.net 才接触到 c#、 js 这些的,希望大大能解惑一下,或者能告诉我一下这是一个什么语法知识吗
|
8
sweetcode OP @virusdefender 修正下问法吧,我一直不明白在这个 alert 里面他是怎么知道 targetAnswer 是一个数组的,而不是一个字符串呢?(因为这个原因我第一次写的时候用了<%=targetAnswer[seed]%>)
|
9
sweetcode OP @virusdefender 如果我单独的吧 <script> alert('"+targetAnswer[seed]+"')</script> 这句丢到一个 html 页面里,他弹出来的内容是 "+targetAnswer[seed]+" ,所以想问下大大,他为什么可以知道我前面的逻辑代码中有 targetAnswer[seed] 这个变量呢?
|
10
bdbai 2016-09-10 20:59:34 +08:00 via Android
|
11
Jakesoft 2016-09-10 21:07:04 +08:00 via iPhone
我也有事不懂问一下楼主, java 连接字符串用.号吗?
|
13
sweetcode OP |
14
bdbai 2016-09-10 21:33:46 +08:00 via Android
@sweetcode 看前一段。浏览器所需的 js 代码在 C# 看来全都是普通字符串,你这一行所做的是拼 js 代码。如果 targetAnswer[seed] 字符串的内容是 abc ,那么浏览器看到的其实是
<script>alert('abc')</script> 仔细对比一下。 C# 的字符串是双引号包围的,输出之后 js 中就没有双引号了。 js 可以用单或双引号包围字符串,'abc' 是 js 的字符串写法。因此 <script>alert(abc)</script> 也就是前一种方法所输出的 js ,当然会导致错误,因为 js 把 abc 当作 js 变量,而不是字符串来看。 有点啰嗦,不知道你明白没有。 |
15
Jakesoft 2016-09-10 22:04:41 +08:00
|
16
sweetcode OP @bdbai 刚才走开了,回来后仔细观察了 IDE 的符号匹配,发现是三组
"<script> alert('" targetAnswer[seed] "')</script>" 再结合大大的解释,明白了,谢谢大大 |
17
caomu 2016-09-10 22:07:05 +08:00 via Android
Response.Write(
"<script> alert('" + targetAnswer[seed] + "')</script>" ); |