View Full Version : یه مشکل ساده با خاصیت Div.InnerHTML
V0R73X
چهارشنبه 10 فروردین 1390, 04:03 صبح
سلام.
کد زیر یک ارور داره:
contentDIV.InnerHtml &= content
اونم اینه:
Cannot get inner content of contentDIV because the contents are not literal.
content شامل یک سری تگ Html و متن هست، ContentDIV هم یک DIV هست.
به نظرتون مشکل از کجاست؟
grobech
چهارشنبه 10 فروردین 1390, 08:12 صبح
اول اینکه این کد javascript درون تگ script باید نوشته بشه
شکل صحیح به این صورت
<script type="text/javascript">
function myfunction() {
document.getElementById("p1").innerHTML = "text";
}
</script>
nasinas
پنج شنبه 11 فروردین 1390, 00:56 صبح
سلام.
کد زیر یک ارور داره:
contentDIV.InnerHtml &= content
اونم اینه:
Cannot get inner content of contentDIV because the contents are not literal.
content شامل یک سری تگ Html و متن هست، ContentDIV هم یک DIV هست.
به نظرتون مشکل از کجاست؟
درود به شما
اگه داخل جاوا اسکریپت نوشتی که دوستمون درست میگن
اگرم که نه داری تو کد بی هایند ( قسمت کد نویسی ) مینویسی باید تو قسمت کد نویسی html ،خاصیت runat عنصر div رو برابر با server قرار بدی و بعدشم که بقیش:
contentDIV.InnerHtml = content;
فقط یادت باشه که content باید یه متغیر از نوع string باشه.
V0R73X
پنج شنبه 11 فروردین 1390, 05:21 صبح
ممنونم ولی این کد VB هست JS نیست و منم تو همون قسمت کد نویسیش نوشتم و خاصیت Runat عنصر DIV هم برابر Server هست.
من تشکر کردم از دوستان، ولی لطف بکنید به ارور داده شده هم دقت کنید. راه حل هایی که شما دادید اصلا به اشکال من مربوط نبودن (مثلا اگر اشکال از Runat="server" بود این ارور رو نمیداد)
ارور این هست:
Cannot get inner content of contentDIV because the contents are not literal.
قبلا از راهنمایی دوستان تشکر میکنم...
Roia_del
پنج شنبه 11 فروردین 1390, 08:47 صبح
سلام .
توی contentDiv خالی هست یا پره؟ اگه خالی هستش به جای &= فقط = خالی بزار ببین نتیجه چیه.چون از قرار معلوم توی div هیچ چی نیست واسه همون می گه توش تگی وجود نداره . یه تست بکن قربونت.
nasinas
جمعه 12 فروردین 1390, 02:16 صبح
ممنونم ولی این کد VB هست JS نیست و منم تو همون قسمت کد نویسیش نوشتم و خاصیت Runat عنصر DIV هم برابر Server هست.
من تشکر کردم از دوستان، ولی لطف بکنید به ارور داده شده هم دقت کنید. راه حل هایی که شما دادید اصلا به اشکال من مربوط نبودن (مثلا اگر اشکال از Runat="server" بود این ارور رو نمیداد)
ارور این هست:
Cannot get inner content of contentDIV because the contents are not literal.
قبلا از راهنمایی دوستان تشکر میکنم...
ببخشید دوست من
اگه کد رو بفرستی بهتر میشه کمک کرد
V0R73X
جمعه 12 فروردین 1390, 07:38 صبح
ببخشید دوست من
اگه کد رو بفرستی بهتر میشه کمک کرد
contentDIV.InnerHtml &= content
توی contentDiv خالی هست یا پره؟ اگه خالی هستش به جای &= فقط = خالی بزار ببین نتیجه چیه.چون از قرار معلوم توی div هیچ چی نیست واسه همون می گه توش تگی وجود نداره . یه تست بکن قربونت.
توش یه چیزایی هست و نیمخوام که پاک بشن، واسه همین از &= استفاده کردم، اگر هم بود، نباید این ارور رو میداد چون محتوای پیشفرض برای هر چیزی Null هست پس در واقع کاری که اون کد باید انجام بده اینه که محتوای خالی contentDIV رو به اضافه محتوای رشته content کنه، ولی ارور میگه که محتوایی که در حال حاضر هست لیترال (Literal) نیست، بنابراین نمیشه بهش دسترسی پیدا کرد! کسی میدونه این لیترال چیه، و چطوری باید محتوای این DIV رو لیترال کرد؟ فکر کنم این مشکل رو حل کنه.
صمیمانه از کمک دوستان تشکر میکنم.
nasinas
جمعه 12 فروردین 1390, 13:04 عصر
contentDIV.InnerHtml &= content
توش یه چیزایی هست و نیمخوام که پاک بشن، واسه همین از &= استفاده کردم، اگر هم بود، نباید این ارور رو میداد چون محتوای پیشفرض برای هر چیزی Null هست پس در واقع کاری که اون کد باید انجام بده اینه که محتوای خالی contentDIV رو به اضافه محتوای رشته content کنه، ولی ارور میگه که محتوایی که در حال حاضر هست لیترال (Literal) نیست، بنابراین نمیشه بهش دسترسی پیدا کرد! کسی میدونه این لیترال چیه، و چطوری باید محتوای این DIV رو لیترال کرد؟ فکر کنم این مشکل رو حل کنه.
صمیمانه از کمک دوستان تشکر میکنم.
به احتمالی شاید متغیر رو اشتباهی یا نمیدونم یه جور ی تعریف کردی ، کد رو که ارسال نمیکنین
حالا من یه قطعه کد مینویسم کار هم میکنه ولی نمیدونم مشکلتون از کجاشه
چک کنید با کد نوشته شده شاید مشکلتون حل شد
این کد قسمت اچ تی ام ال
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div runat="server" id="ContentDiv">
NASER TAHERY
</div>
</form>
</body>
</html>
اینم کدش که به سی شارپه البته فقط همون + میشه &
protected void Page_Load(object sender, EventArgs e)
{
string content;
content = "<h1>Dorood bar shoma dooste aziz</h1><br />";
ContentDiv.InnerHtml += content;
}
V0R73X
شنبه 13 فروردین 1390, 00:23 صبح
سلام.
من از دوست خوبمون nasinas تشکر کردم فقط به خاطر اینکه زحمت کشیدن و به این تاپیک جواب دادن، ولی اگه برنامه به این سادگی بود که دیگه مشکلی نداشت!
کدی که شما نوشتی با شرایط من فرق میکنه چون من توی DIV م از قبل چیز میز داشتم واسه همین اونا بودن که مشکل ایجاد میکردن.
حالا من خودم با بدبختی به نتایجی رسیدم اینجا میزارم که دوستان دیگه هم اگه روزی به این مشکل من برخوردن شاید این مشکلشون رو حل کنه:
قضیه اینه که اگر توی Div شما کنترلی چیزی غیر از متن وجود داشته باشه، innerHTML دیگه کار نمیکنه، InnerText هم همینطور.
من توی Divم یه عکس داشتم و یه SQLDataSource واسه همین... :اشتباه:
من مشکلی با خالی کردن DIV نداشتم واسه همین خالیش کردم، ولی روشی هست که بدون خالی کردنش میشه بهش چیز میز اضافه کرد، اونم متد RenderControl هست که آموزشش در زیر گذاشته شده:
RenderControl (http://forums.asp.net/t/1168614.aspx/1?Cannot+get+inner+content+of+XXX+because+the+cont ents+are+not+literal)
Himalaya
شنبه 13 فروردین 1390, 02:18 صبح
سلام
من از دوست خوبمون nasinas تشکر کردم فقط به خاطر اینکه زحمت کشیدن و به این تاپیک جواب دادن، ولی اگه برنامه به این سادگی بود که دیگه مشکلی نداشت
اتفاقا سادس
قضیه اینه که اگر توی Div شما کنترلی چیزی غیر از متن وجود داشته باشه، innerHTML دیگه کار نمیکنه، InnerText هم همینطور
بهتر بود میگفتید اگه توی div کنترل سمت سرور وجود داشته باشه (که همین موضوع واسه شما مشکل ایجاد کرده) شما دیگه نمیتونید از innerHtml و innerText استفاده کنید (چون مثلا تگ img هم یه کنترله، ولی چون کنترل سمت سرور نیست، پس استفاده از innerHtml و innetText مشکلی ایجاد نمیکنه)
content شامل یک سری تگ Html و متن هست
شما به جای استفاده از innerHtml و innerText باید content (مجموعه تگ های html) رو توی خصوصیت Text مربوط به یکی از کنترلهای Label یا Literal یا LiteralControl قرار بدید و بعد اون کنترل رو به Div مورد نظرتون Add کنید . مثلا اینطوری
<div id="div1" runat="server">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<h3>
MyName is:
</h3>
</div>
protected void Button1_Click(object sender, EventArgs e)
{
string content = "<h1><font color='Red'>Amir</font> Ajorlo</h1>";
div1.Controls.Add(new LiteralControl(content));
}
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.