怎样将后台带有\"和'的字符串变量有效地赋值到js的var变量?

时间:2022-10-28 20:36:07
//a.aspx
<div runat="server" id="f"></div>
<div runat="server" id="x"></div>

<script language="javascript">

    function ee()
    {
      var e = "<% =k%>";
      f.innerHTML = e; //关键在这里要通过
  }
</script>

//a.aspx.cs
public string k;

void aa()
{
string k="<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\"><tr><td onmouseover=\"javascript:this.style.backgroundColor='#552211'; document.getElementById('x').innerHTML='<b>ccc</b>';\">kknd</td></tr></table>";
}

4 个解决方案

#1


你应该学习一下 javascript 语法知识。

\ 需要转义,写为两个\ 啊。

#2


下边能写出(抄出)
string k="<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\"><tr>

这样的代码,自己应该反思一下!

#3


首先,在c# 代码运行时,字符串中也根本不存在什么 \" 这种东西。这纯粹是调试时你看到的,源代码中你写的转义符号。而运行时就只有双引号,并没有之前的那个斜杠。

代码
var e = "<% =k%>";

这里并不是把什么 k 变量赋值给 e。如果有人这样告诉你的,那么它纯粹是坑爹的教师。这里明明是“宏代换”的只是符,根本不是运行时的赋值语句。你从浏览器端打开 html 源代码看看,就知道该如何调试、测试了。你的老师可能稀里糊涂地糊弄你,所以才让你以为这里是把 k 变量的值赋值给什么e变量。如果是博客上这么写的,那么这个作者的博客以后就别看了。因为指鹿为马往往是一种故意欺骗行为,是一些培训老师图省事、快速打发流水线的“小工”而故意这样说的。

既然变量 k 中的双引号之前并没有斜杠,而宏代换从而输出 html/javascript 代码的时候需要在双引号前边有斜杠,那么显然你就需要将 k 中的双引号替换为 /" 两个符号。

那么问题来了,你知道在c# 代码(string.Replace 函数的参数)中的字符串中表示两个符号 /" 为什么需要写为  ///" 吗?

如果不知道,请重新学习 c# 编程。一定要重新学习!

#4


随便手打的太快, 上面的 / 请改为 \。

#1


你应该学习一下 javascript 语法知识。

\ 需要转义,写为两个\ 啊。

#2


下边能写出(抄出)
string k="<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\"><tr>

这样的代码,自己应该反思一下!

#3


首先,在c# 代码运行时,字符串中也根本不存在什么 \" 这种东西。这纯粹是调试时你看到的,源代码中你写的转义符号。而运行时就只有双引号,并没有之前的那个斜杠。

代码
var e = "<% =k%>";

这里并不是把什么 k 变量赋值给 e。如果有人这样告诉你的,那么它纯粹是坑爹的教师。这里明明是“宏代换”的只是符,根本不是运行时的赋值语句。你从浏览器端打开 html 源代码看看,就知道该如何调试、测试了。你的老师可能稀里糊涂地糊弄你,所以才让你以为这里是把 k 变量的值赋值给什么e变量。如果是博客上这么写的,那么这个作者的博客以后就别看了。因为指鹿为马往往是一种故意欺骗行为,是一些培训老师图省事、快速打发流水线的“小工”而故意这样说的。

既然变量 k 中的双引号之前并没有斜杠,而宏代换从而输出 html/javascript 代码的时候需要在双引号前边有斜杠,那么显然你就需要将 k 中的双引号替换为 /" 两个符号。

那么问题来了,你知道在c# 代码(string.Replace 函数的参数)中的字符串中表示两个符号 /" 为什么需要写为  ///" 吗?

如果不知道,请重新学习 c# 编程。一定要重新学习!

#4


随便手打的太快, 上面的 / 请改为 \。