PDA

View Full Version : [Asp .Net] 3.5 COSA SBAGLIO? "DOM"


luxe
04-08-2009, 23:01
<%@ Master Language="VB" CodeFile="MasterPage.master.vb" Inherits="MasterPage" %>

<!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>Pagina senza titolo</title>
<asp:ContentPlaceHolder id="head" runat="server">
</asp:ContentPlaceHolder>
<SCRIPT LANGUAGE="JavaScript">

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

<!-- Begin
var timerID = null;
var timerRunning = false;
function stopclock (){
if(timerRunning)
clearTimeout(timerID);
timerRunning = false;
}
function showtime () {
var now = new Date();
//now.setHours(23);
//now.setMinutes(12);
var hours = now.getHours();
var minutes = now.getMinutes();
var seconds = now.getSeconds();
var timeValue = "" + ((hours >24) ? hours -24 :hours);
if (timeValue == "0") timeValue = 24;

timeValue += ((minutes < 10) ? ".0" : ".") + minutes
timeValue += ((seconds < 10) ? ".0" : ".") + seconds

document.getElementById('ctl00_TextBox1').value = now.getDay() + "/" + now.getMonth() + "/" + now.getFullYear() + " " + timeValue;

timerID = setTimeout("showtime()",1000);
timerRunning = true;
}


function startclock() {
stopclock();
showtime();
}

// End -->
</SCRIPT>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">

</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>


nella pagina sopra incollata c'e' una funzione Javascript che genera data e ora. La TextBox1 è nella pagina master e come ho letto bisogna vedere il codice ID che asp .net assegna, ed infatti ho specificato 'ctl00_TextBox1' e non 'TextBox1', ma NON C'E' NIENTE DA FARE, non riesco a visualizzare sto cavolo di orario nella textbox. In una normale pagina asp .net, senza master page, questo codice funziona, chiaramente specificando 'TextBox1' senza prefisso 'ctl00_"
Spero che qualcuno possa darmi una dritta altrimenti ne esco fuori matto:muro: :muro: :muro: :muro:

astorcas
05-08-2009, 09:15
sei sicuro che una volta renderizzato il controllo abbia davvero come id "ctl00_TextBox"?

perché non provi a sostituire


document.getElementById('ctl00_TextBox1')


con


document.getElementById("<%= TextBox1.ClientID%>")


?

Non posso fare test ma credo basti

tomminno
05-08-2009, 12:57
Hai duplicato il post.

Scusa la domanda ma con quale editor hai scritto quella pagina?

<SCRIPT LANGUAGE="JavaScript">

è formalmente errato e visual studio lo segnala, dovrebbe essere:

<script type="text/javascript">
...
</script>


Inoltre i commenti:

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->


I commenti Javascript sono come quelli del C++ // o /* */. Te hai inserito dei commenti html.

Inoltre il controllo come lo hai messo te a me viene generato con id "TextBox1" (lo puoi verificare visualizzando il sorgente html della pagina direttamente dal browser), la "decorazione" degli id di asp.net non va usata direttamente ma bisogna usare la proprietà ClientID messa a disposizione dai controlli, proprio perchè non è dato sapere come il motore interno di asp.net genererà quei nomi (è prevedibile ma non è certo) inoltre se sposti quel controllo all'interno di un altro il suo id potrebbe cambiare e di conseguenza il tuo javascript non funzionerebbe più.


document.getElementById('<%=TextBox1.ClientID%>').value = now.getDay() + "/" + now.getMonth() + "/" + now.getFullYear() + " " + timeValue;


Infine ti faccio una domanda chi richiama la funzione startclock la prima volta?


<body onload="startclock()">

astorcas
05-08-2009, 14:16
scusa ma language perché non dovrebbe andare bene? E' un attributo deprecato e se non usi una validazione strict dovrebbe essere ok no? (Ovviamente se è deprecato è meglio non usarlo :fagiano:)

luxe
05-08-2009, 18:16
Grazie ragazzi, il codice javascript funziona alla perfezione, bastava usare '<%=TextBox1.ClientID%>' come mi avete giustamente suggerito.

Grazie ancora

tomminno
05-08-2009, 18:33
scusa ma language perché non dovrebbe andare bene? E' un attributo deprecato e se non usi una validazione strict dovrebbe essere ok no? (Ovviamente se è deprecato è meglio non usarlo :fagiano:)

Niente di chè ma siccome stiamo parlando di ASP.NET 3.5 ergo Visual Studio 2008 mi pare strano che il validatore automatico (che non sarebbe male lasciare com'è) non segnali quegli errori.

astorcas
05-08-2009, 22:08
Grazie ragazzi, il codice javascript funziona alla perfezione, bastava usare '<%=TextBox1.ClientID%>' come mi avete giustamente suggerito.

Grazie ancora

felice d'averti aiutato! :)

Niente di chè ma siccome stiamo parlando di ASP.NET 3.5 ergo Visual Studio 2008 mi pare strano che il validatore automatico (che non sarebbe male lasciare com'è) non segnali quegli errori.

mi sembra giusto! :mano: