Jag är osäker på vilket forum detta skall tillhöra, men jag försöker här. kolla vad <%# DataBinder.Eval(Container.DataItem, "Id")%> ger.kanke inte är det värdet du vill ha. Det ser ut som om jag har problem här: Jag har nu fått tag på en annan kod, som fungerar, men det finns en del som jag inte tycker om. Ändra Tack Göran, du är kanon.Javascriptfel i ASP.net applikation
Vid konvertering ifrån klassisk ASP så försöker jag så här:
<code>
<script type="text/javascript">
<!--
function openIt(faq) {
var nodeList = document.getElementsByTagName("div");
for (var i = 0; i < nodeList.length; i++)
nodeList[i].style.display = "none";
showIt = document.getElementById(faq);
if (showIt.style.display == "none") {
showIt.style.display = "block";
}
}
// -->
</script>
<span class="Dark">Fråga :<%# DataBinder.Eval(Container.DataItem, "Id")%></span><br/>
list'); return false;" onmouseover= "window.status='SAW - FAQ';return true" onmouseout= "window.status='Svenssons AkordsWerkstad';return true">
<%# DataBinder.Eval(Container.DataItem, "Question")%><br/>
<div class="sidaunder" id=" <%# DataBinder.Eval(Container.DataItem, "Id")%>"list style="display:none">Svar : <%# DataBinder.Eval(Container.DataItem, "Id")%>:
<%# DataBinder.Eval(Container.DataItem, "Question")%></div>
</code>
Jag får följande fel:
<info>
Körningsfel i Microsoft JScript: Objekt krävs.
'Det är denna raden som jag får error på:
if (showIt.style.display == "none") {
</info>
Några tipts?Sv: Javascriptfel i ASP.net applikation
Observara att asp.net döper om dina kontroller. så en knapp kan heta form1_Button1 even om den heter button1 i vs.net.Sv:Javascriptfel i ASP.net applikation
<code>
<a href="#" onclick="openIt('1 list');
<div class=""sidaunder"" id="&rs("Id")&"list style=""display:none"">S
</code>
..men så ser ju inte min kod ut.Sv: Javascriptfel i ASP.net applikation
<code>
function toggleBox(szDivID, iState) // 1 visible, 0 hidden
{
if(document.layers) //NN4+
{
document.layers[szDivID].visibility = iState ? "show" : "hide";
}
else if(document.getElementById) //gecko(NN6) + IE 5+
{
var obj = document.getElementById(szDivID);
obj.style.visibility = iState ? "visible" : "hidden";
}
else if(document.all) // IE 4
{
document.all[szDivID].style.visibility = iState ? "visible" : "hidden";
}
}
// -->
<%# DataBinder.Eval(Container.DataItem, "Question")%></a>
<div ID='<%# DataBinder.Eval(Container.DataItem, "Id")%>'>
',0)" >-
<b>Svar <%# DataBinder.Eval(Container.DataItem, "Id")%>:</b>
<%# DataBinder.Eval(Container.DataItem, "Answer")%>
</div>
</script>
Det första är, när sidan visas, så är alla divarna visibla, jag skulle vilja ha dem hida.
Sen har jag sett ett liknande script någonstans, som "skuter" ner de underligande texterna när man gör
diven visibel.
Som det nu är, så visas inte texten (när de är hida) men det tar samma utrymme.
Är det någon som förstår mitt svammel?
</code>
<b>OBS</b>
Denna kod var inte bra, så jag går tillbaka till min ursprungliga kod, och försöker att lösa problemen.Sv: Javascriptfel i ASP.net applikation
openIt(' <%# DataBinder.Eval(Container.DataItem, "Id")%> list');
till
openIt('<%# DataBinder.Eval(Container.DataItem, "Id")%>list');
och ändra
id=" <%# DataBinder.Eval(Container.DataItem, "Id")%>"list
till
id="<%# DataBinder.Eval(Container.DataItem, "Id")%>list"Sv:Javascriptfel i ASP.net applikation
Dock finns det ett aber:
<code>
for (var i = 0; i < nodeList.length; i++)
nodeList[i].style.display = "none";
</code>
Dessa rader var ju till för att dölja alla utom för den man klickade på, nu döljs <b>allting</b>.
En tanke.
Om jag istället för att bygga som jag har gjort, och istället vill ha + och - tecken, vilka förändringar
behöver jag göra?
[REDIGERAT]
Det var ju ganska så lätt:
<code>
if (showIt.style.display == "none") {
showIt.style.display = "block";
}
else {
showIt.style.display='none';
}
return false;
</code>
Då är det ju bara en sak kvar.
I stänkt läge, så visar ju länken ett "+"-tecken. På vilket sätt är det lätast att ändra detta till ett "-"-tecken, när diven är öppen?
Är jag tvungen att labba med bilder?
[REDIGERAT]
Och även det löste sig.
<code>
function changeText(faq) {
if(document.getElementById(faq).innerText =="+")
document.getElementById(faq).innerHTML ="-"
else if(document.getElementById(faq).innerText =="-")
document.getElementById(faq).innerHTML ="+"
}
<span id="<%# DataBinder.Eval(Container.DataItem, "Id")%>" onclick="changeText(this.id)">+</span>
</code>
Nu är den biten klar.