JS脚本加载用户控件问题

sxmonsy 2008-07-16 09:02:39
我的代码是这样的:

var s="<uc1:cpzs ID="Cpzs1" runat="server" />";
s = s.Repalce("\r\n","");
XXXX.innerHTML =s;

页面执行后的源码里是这样的:

var s="

<table>
<tr>
<td style="width: 3px">
adsdfsadfasdf
</td>
</tr>
</table>

";
s = s.Repalce("\r\n","");
XXXX.innerHTML =s;

然后就报脚本错误:未结束的字符串常量.

我试了下要是直接在里面写:
var s=" <table> <tr> <td style=\"width: 3px\"> adsdfsadfasdf </td> </tr> </table> ";
这样就行.
急死了.

求下解决的方法.





...全文
394 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxmonsy 2008-07-18
  • 打赏
  • 举报
回复
远方你的代码我试了,不过不管加不加: <div onclick="addCtl()"> </div>页面都会输出用户控件.
无法控制.
sxmonsy 2008-07-17
  • 打赏
  • 举报
回复
就是通过innerHTML把用户控件加载到DIV里.
fellowcheng 2008-07-17
  • 打赏
  • 举报
回复
1、楼主要实现什么功能?

2、现在出的错误或问题是什么地方?
sxmonsy 2008-07-17
  • 打赏
  • 举报
回复
cpzs.ascx里就是:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="cpzs.ascx.cs" Inherits="cpzs" %>

<table>
<tr>
<td style="width: 3px">
adsdfsadfasdf</td>
</tr>
</table>
sxmonsy 2008-07-17
  • 打赏
  • 举报
回复
document.getElementById("TextArea1").value="<uc1:cpzs ID="Cpzs1" runat="server" />";

XXXX.innerHTML ="document.getElementById("TextArea1").value";
我就是这么写的
fellowcheng 2008-07-17
  • 打赏
  • 举报
回复
我刚才试了下,可以呀
楼主贴下完整代码,看看
fellowcheng 2008-07-17
  • 打赏
  • 举报
回复
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UCTest.aspx.cs" Inherits="UCTest" %>

<%@ Register Src="uc1.ascx" TagName="uc1" TagPrefix="uc1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<script type="text/javascript">
function addCtl()
{
event.srcElement.innerHTML = "<uc1:uc1 ID='Uc1_1' runat='server' />";
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div onclick="addCtl()">



</div>
</form>
</body>
</html>


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class uc1 : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
this.Page.ClientScript.RegisterStartupScript(this.GetType(),"",@"<table border='1'>
<tr>
<td style='width: 3px'>
adsdfsadfasdf
</td>
</tr>
</table>");
}
}
sxmonsy 2008-07-17
  • 打赏
  • 举报
回复
照你说的我写了:
document.getElementById("TextArea1").value="<uc1:cpzs ID="Cpzs1" runat="server" />";
可是还是报错.
而且在页面执行后就变成:
document.getElementById("TextArea1").value="

<table>
<tr>
<td style="width: 3px">
adsdfsadfasdf</td>
</tr>
</table>

";
还是不行呀
fellowcheng 2008-07-17
  • 打赏
  • 举报
回复
不直接将该数据以参数形式传递,而是先将其赋值在一个隐藏的文本内,需要调用的函数里只需读取该文本里的内容即可

放到textarea里就可以,刚才我测试了
fellowcheng 2008-07-17
  • 打赏
  • 举报
回复
问题搞定了吗?
fellowcheng 2008-07-17
  • 打赏
  • 举报
回复
我刚才又试了一下,确实
要把控件代码
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="cpzs.ascx.cs" Inherits="cpzs" %>

<table>
<tr>
<td style="width: 3px">
adsdfsadfasdf</td>
</tr>
</table>

改为后台代码才行
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class uc1 : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
this.Page.ClientScript.RegisterStartupScript(this.GetType(),"",@"<table border='1'>
<tr>
<td style='width: 3px'>
adsdfsadfasdf
</td>
</tr>
</table>");
}
}



sxmonsy 2008-07-17
  • 打赏
  • 举报
回复
直接写HTML代码不行吗?不用RegisterStartupScript
fellowcheng 2008-07-17
  • 打赏
  • 举报
回复
你把页面完整代码贴出来吧,我给你试下
「已注销」 2008-07-16
  • 打赏
  • 举报
回复
字符串,表达式都必须在一行内完成;如果要分成几行写就必须在每行的结束位置加上+号进行字符串连接
fellowcheng 2008-07-16
  • 打赏
  • 举报
回复
今天在做JAVASCRIPT的时候,发现老是出现”未结束的字符串常量”.

自己找了下应该是传参数的时候,有特殊字符引起的.网上也找了下,也有好多出现这种情况.做下总结,以方便以后查阅.

1.JAVASCRIPT引用时,使用的字符语言不一致.
比如:<script type=”text/javascript” src=”xxx.js” charset=”UTF-8″>.xxx.js文件内部使用的是GB2312的格式,外面调用使用的是UTF-8,所以文件内部部分特殊字符因为格式不一致,出现乱码,造成此原因.

2.JAVASCRIPT输出HTML字符时,前后标记不匹配.
这种比较常见,往往在输出字符串时,出现单引号(’)或双引号(”)不配对,或者是在document.write()的时候,没有正确输出单引号(’)或双引号(”)

3.参数内出现HTML标记语言或包含换行符
我今天所遇到的是这种情况.因为我所得到的数据以参数形式传给一函数,结果该数据里包含换行符,造成了此错误.
如:一般测试时只使用单行的数据,是正常的,未出现这个错误,.
当测试时使用多行数据,并使用回车链换行,就出行了此错误.因为里面包含了换行符

对于第3种情况,我的解决方法是:不直接将该数据以参数形式传递,而是先将其赋值在一个隐藏的文本内,需要调用的函数里只需读取该文本里的内容即可.
fellowcheng 2008-07-16
  • 打赏
  • 举报
回复
  <div style="display:none;" id="divText">

<table>
<tr>
<td style="width: 3px">
adsdfsadfasdf
</td>
</tr>
</table>
</div>


如果不把换行符去掉的话,只有把你的HTML放到一个隐藏div里面

asge8900 2008-07-16
  • 打赏
  • 举报
回复
嗯对,还有就是换行的时候不能直接换,比如
var s="ccxcx"+
"<table>";
freeflying1222 2008-07-16
  • 打赏
  • 举报
回复
呵呵
万小萌 2008-07-16
  • 打赏
  • 举报
回复
var s='<uc1:cpzs ID="Cpzs1" runat="server" />';
s = s.Repalce("\r\n","");
XXXX.innerHTML =s;

单双引号要注意!!

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧