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> ";
这样就行.
急死了.

求下解决的方法.





...全文
357 点赞 收藏 19
写回复
19 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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;

单双引号要注意!!
回复
相关推荐
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2008-07-16 09:02
社区公告
暂无公告