Zdravím,
prosil bych, aby se ozval aspoň někdo, kdo má zkušenosti s VHDL, abych se tady zbytečně nerozepisoval, pak budu pokračovat. Děkuji.
Příspěvky odeslané z IP adresy 212.71.186.–
Dělám na localhostu, tak ti tu zkusím uploadnout celé ty soubory související s funkcí. Pracuju v IE9 (tady mi nejde funkce přidání řádku - zkusil jsem se řídit podle předchozího příspěvku :)), Firefox 4, Chrome 10, Safari 5.0.3 a Opera 11.01 - v opeře mi nejdou smazat nově přidané řádky.
Pozn: nejde mi je nahrát přes stránku, tak jsem je dal na leteckou poštu: http://leteckaposta.cz/647955883
pokrok, použil jsem thead a tbody a pomocí development tool google chromu zjišťuji, že ona bílá místa jsou samé <tbody></tbody> pod sebou a vznikají přidáním nového řádku. Opravdu to bylo vkládáním do table místo do tbody, teď už vše funguje ve firefox, chrome, opera, safari, akorát v IE se mi nechce spustit funkce přidání nového řádku, mám zjištěné, kde by měla být chyba:
http://www.pixhost.org/show/2212/6463823_bez-nazvu.png
Zdravím,
mám formulář v tabulkovém designu a potřebuji funkce na přidání a odebrání řádku.
Přidání řádku řeším pomocí metody AJAX, kdy od serveru dostanu odpověď:
<?php session_start();
$_SESSION["i"] = $_POST["i"];
echo "<tr class=\"stred\" id=\"tr_".$_SESSION["i"]."\">".
"<td><input type=\"hidden\" name=\"id_".$_SESSION["i"]."\" id=\"id_".$_SESSION["i"]."\" value=\"".$_SESSION["i"]."\"></td>".
"<td><input type=\"text\" name=\"jmeno_".$_SESSION["i"]."\" id=\"jmeno_".$_SESSION["i"]."\" value=\"".$_SESSION["i"]."\" style=\"text-align:center\" disabled></td>".
"<td><input type=\"text\" name=\"rodne_cislo_".$_SESSION["i"]."\" id=\"rodne_cislo_".$_SESSION["i"]."\" value=\"".$_SESSION["i"]."\" style=\"text-align:center\" disabled></td>".
"<td><input type=\"text\" name=\"bydliste_".$_SESSION["i"]."\" id=\"bydliste_".$_SESSION["i"]."\" value=\"".$_SESSION["i"]."\" style=\"text-align:center\" disabled></td>".
"<td><input type=\"text\" name=\"obor_".$_SESSION["i"]."\" id=\"obor_".$_SESSION["i"]."\" value=\"".$_SESSION["i"]."\" style=\"text-align:center\" disabled></td>".
"<td><img name=\"upravit_".$_SESSION["i"]."\" id=\"upravit_".$_SESSION["i"]."\" src=\"images/upravit.png\" alt=\"upravit\" title=\"upravit\" onclick=\"upravit(this.name);\">".
"<img name=\"odstranit_".$_SESSION["i"]."\" id=\"odstranit_".$_SESSION["i"]."\" src=\"images/odstranit.png\" alt=\"odstranit\" title=\"odstranit\" onclick=\"odstranit(this.name);\"></td></tr>";
++$_SESSION["i"]; ?>
a tuto odpověď připojím k tabulce:
document.getElementById("tabulka").innerHTML += xmlHttp.responseText;
Dále funkci odebrání řádku řeším pomocí rodičovské struktury:
document.getElementById("radek").parentNode.removeChild(document.getElementById(id_tr));
Problém nastane, když odstraním přidaný řádek - něco na stránce zabere neviditelné místo a to se s každým novým odstraněným řádkem zvyšuje. Zkoušel jsem zjistit tvar toho místa (ctrl+a), ale nic tam nevidím. Proto mě zajímá, co to způsobuje, jestli se jedná o odpověď od serveru, nebo o nesprávné připojení řádku k tabulce, nebo něco jiného.
Pozn.: Kód byl zjednodušen a upraven pro lepší pochopení (např.: id řádku se neshoduje s předchozím příkladem), ale neovlivní to samotnou funkci.
Předem děkuji za odpovědi,
Harpener.
Podařilo se mi vytvořit si mysql událost:
CREATE EVENT reset_energy
ON SCHEDULE EVERY 1 DAY STARTS TIMESTAMP (CURDATE(),'23:59:59')
DO UPDATE attributes SET energy = 200;
Měla by mi každý den o půlnoci nastavit v celém sloupci hodnotu 200 (zatím nevyzkoušeno), nicméně když jsem se zpětně pokusil podívat se na události pomocí
SELECT * FROM mysql.event;
nenašel jsem, co má daná událost vlastně udělat - přehlédl jsem něco, nebo se tato informace ukládá jinde?
PS: VYŘEŠENO
To ian : To s tím přehlídnutím, tak to jsem si pak opravil ale už jsem to na tu leteckou poštu dal, ale našel a opravil sem si to takže to v pohodě, měl jsem problém jen s tím CleanUpSprites() ;) Díky moc, jako učitel si neselhal spíš já tady tápu ve tmě ;)
a jinak díky moc, funguje to ;) zachránil jsi mě
To ian :
Díky moc, funguje to, ale teď mám problém s tím pod tím, s: "void GameEngine::CleanupSprites()" Snažil jsem se to nějak upravit ale bez účinku (vyplivlo to jinačí chybu), proto píšu znova a opět si s tím nevím rady.
původně:
void GameEngine::CleanupSprites()
{
// Delete and remove the sprites in the sprite vector
vector<Sprite*>::iterator siSprite;
for (siSprite = m_vSprites.begin(); siSprite != m_vSprites.end(); ++siSprite )
{
delete (*siSprite);
m_vSprites.erase(siSprite);
siSprite--;
}
}
Jo a ten GameEngine.cpp, který používám já je "novější" (je tam ještě fce:
// Handle the SA_ADDSPRITE sprite action
if (saSpriteAction & SA_ADDSPRITE)
// Allow the sprite to add its sprite
AddSprite((*siSprite)->AddSprite());
tak jsem to tam přidal)
Zde radši přikládám zdrojáky (je to tam opravené to cos postoval)
http://leteckaposta.cz/152397257
PS: Nevím jak "zacházet" s tím GameEngine.cpp.patch :smile14: (sem to prostě okopíroval a bylo)
Díky za pomoc (a taky vysvětlení)
To ian :
Místo toho
for (siSprite = m_vSprites.begin(); siSprite != m_vSprites.end(); siSprite++)
{
delete (*siSprite);
m_vSprites.erase(siSprite);
siSprite--;
}
jsem dal:
siSprite = m_vSprites.begin()
while (siSprite !=m_vSprites.end())
{
if ( ??? )
{
delete (*siSprite);
m_vSprites.erase(siSprite);
}
else
{
siSprite++;
}
}
Jenže nevím co dát do toho "if". Dále bych se chtěl zeptat co taky s ifem nad tím:
if (saSpriteAction & SA_KILL)
{
// Notify the game that the sprite is dying
SpriteDying(*siSprite);
// Kill the sprite
delete (*siSprite);
m_vSprites.erase(siSprite);
siSprite--;
continue;
}
tam bych taky měl dát else ale nevím pořádně jak to použít, omlouvám se ale v tomhle se až tak moc nevyznám, jsem rád že mi to vůbec pojede, je to moje maturitní práce a téma už nejde změnit a ve škole nás boužel nic prakticky nenaučili a takovou chybu jsem opravdu nečekal :)
Tak se mi to povedlo s pomocí těch událostí onLoad a onUnload a samozřejmě použití cookies (u kterých je použitý kód z internetu). Objevil jsem ale drobný zádrhel, a to když obnovím stránku těsně před vypršením času, potom se jaksi propletou funkce "záchrana parametrů" a ajax odeslání a výsledkem je přičtení dvojnásobného množství zkušeností (jako kdyby se ajax provedl dvakrát po sobě). Asi je to tím, že se stihne vyhodnotit těsně před skriptem obnovení stránky. Dám sem ukázku kódu. Vím, že je dost neohrabaný a příšerně složitý, ale právě se snažím o funkčnost, ne jednoduchost. Ta počká.
function Set_Cookie( name, value, expires, path, domain, secure )
{
var today = new Date();
today.setTime( today.getTime() );
if (expires)
{
expires = expires * 1000 * 60 * 60 * 24;}
var expires_date = new Date( today.getTime() + (expires) );
document.cookie = name + "=" + escape( value ) +
((expires) ? ";expires=" + expires_date.toGMTString() : "" ) +
((path) ? ";path=" + path : "" ) +
((domain) ? ";domain=" + domain : "" ) +
((secure) ? ";secure" : "" );
}
function Get_Cookie( check_name ) {
var a_all_cookies = document.cookie.split( ';' );
var a_temp_cookie = '';
var cookie_name = '';
var cookie_value = '';
var b_cookie_found = false;
for ( i = 0; i < a_all_cookies.length; i++ )
{
a_temp_cookie = a_all_cookies[i].split( '=' );
cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
if (cookie_name == check_name)
{
b_cookie_found = true;
if ( a_temp_cookie.length > 1 )
{cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );}
return cookie_value;
break;
}
a_temp_cookie = null;
cookie_name = '';
}
if (!b_cookie_found)
{return null;}
}
function Delete_Cookie( name, path, domain )
{if (Get_Cookie(name)) document.cookie = name + "=" + ((path) ? ";path=" + path : "") + ((domain) ? ";domain=" + domain : "") + ";expires=Thu, 01-Jan-1970 00:00:01 GMT";}
function obnoveni() //OnLoad u <body>
{
document.getElementById("div_typ_prace_id").style.display="none";
document.getElementById("div_cas_prace_id").style.display="none";
alert("Obnovila se stránka!")
if (!Get_Cookie ("cas_funkce"))
{alert ("Nenačetl jsem funkci!");}
else {cas = Get_Cookie ("cas_funkce");
document.getElementById("div_typ_prace_id").style.display="block";
document.getElementById("div_cas_prace_id").style.display="block";
alert("Já funguju :)");
cas = Get_Cookie ('cas_funkce');
fce = Get_Cookie ('druh_funkce');
celkovy_cas = Get_Cookie ('vychozi_cas_funkce');
if (fce == "funkce1")
{//příprava stránky na scriptovou funkci
document.getElementById("prace_typ_id").value = "Udržovat oheň 1 minutu";
document.getElementById("div_typ_prace_id").style.display="block";
document.getElementById("div_cas_prace_id").style.display="block";
document.getElementById("ohen_id").disabled = true;
document.getElementById("lov_id").disabled = true;
document.getElementById("sber_id").disabled = true;
fce = "funkce1";
//nastavení intervalu
ohen_funkce.time1Id = setInterval(ohen_funkce, 999);
//možnost zrušení intervalu pomocí tlačítka
zrusit.onclick = function() {clearInterval(ohen_funkce.time1Id);
document.getElementById("ohen_id").disabled = false;
document.getElementById("lov_id").disabled = false;
document.getElementById("sber_id").disabled = false;
document.getElementById("div_typ_prace_id").style.display="none";
document.getElementById("div_cas_prace_id").style.display="none";
document.getElementById("prace_typ_id").value = "";
document.getElementById("prace_cas_id").value = "";
fce = "nic";}}
else if (fce == "funkce2")
{
document.getElementById("prace_typ_id").value = "Lovit v lese 1 minutu"";
document.getElementById("div_typ_prace_id").style.display="block";
document.getElementById("div_cas_prace_id").style.display="block";
document.getElementById("ohen_id").disabled = true;
document.getElementById("lov_id").disabled = true;
document.getElementById("sber_id").disabled = true;
fce = "funkce2";
lov_funkce.time2Id = setInterval(lov_funkce, 999);
zrusit.onclick = function() {clearInterval(lov_funkce.time2Id);
document.getElementById("ohen_id").disabled = false;
document.getElementById("lov_id").disabled = false;
document.getElementById("sber_id").disabled = false;
document.getElementById("div_typ_prace_id").style.display="none";
document.getElementById("div_cas_prace_id").style.display="none";
document.getElementById("prace_typ_id").value = "";
document.getElementById("prace_cas_id").value = "";
fce = "nic";}}
else if (fce == "funkce3")
{
document.getElementById("prace_typ_id").value = "Sbírat bobule 1 minutu"";
document.getElementById("div_typ_prace_id").style.display="block";
document.getElementById("div_cas_prace_id").style.display="block";
document.getElementById("ohen_id").disabled = true;
document.getElementById("lov_id").disabled = true;
document.getElementById("sber_id").disabled = true;
fce = "funkce3";
sber_funkce.time3Id = setInterval(sber_funkce, 999);
zrusit.onclick = function() {clearInterval(sber_funkce.time3Id);
document.getElementById("ohen_id").disabled = false;
document.getElementById("lov_id").disabled = false;
document.getElementById("sber_id").disabled = false;
document.getElementById("div_typ_prace_id").style.display="none";
document.getElementById("div_cas_prace_id").style.display="none";
document.getElementById("prace_typ_id").value = "";
document.getElementById("prace_cas_id").value = "";
fce = "nic";}}
}
Delete_Cookie('cas_funkce', '/', '');
Delete_Cookie('druh_funkce', '/', '');
Delete_Cookie('vychozi_cas_funkce', '/', '');
}
function pred_obnoveni()//OnUnload u <body>
{
alert("Chystá se obnovit stránka!");
if (fce == "funkce1"){alert("Běží ti funkce udržovat oheň!");
Set_Cookie ('cas_funkce', cas, '', '/', '', '');
Set_Cookie ('druh_funkce', fce, '', '/', '', '');
Set_Cookie ('vychozi_cas_funkce', celkovy_cas, '', '/', '', '');}
else if (fce == "funkce2") {alert("Běží ti funkce lovit v lese!");
Set_Cookie ('cas_funkce', cas, '', '/', '', '');
Set_Cookie ('druh_funkce', fce, '', '/', '', '');
Set_Cookie ('vychozi_cas_funkce', celkovy_cas, '', '/', '', '');}
else if (fce == "funkce3") {alert("Běží ti funkce sbírat bobule!");
Set_Cookie ('cas_funkce', cas, '', '/', '', '');
Set_Cookie ('druh_funkce', fce, '', '/', '', '');
Set_Cookie ('vychozi_cas_funkce', celkovy_cas, '', '/', '', '');}
else {fce = "nic";
alert("Neběží ti žádná funkce!");}
}
Zdravím, potřeboval bych poradit.
Po obnovení stránky (např. F5, ctrl+r ...) se přeruší právě probíhající javascriptová funkce (s intervalem).
Lze tomu čistě teoreticky zabránit nějakou záchranou parametrů funkce těsně před obnovením, nebo musím postavit funkci na jiné logice?
no musel jsem si změnit i řádek 8, ale důvod, proč tam byl setInterval je, aby se to provedlo vícekrát a nestálo to na hodnotě 60, což teď dělá, pokud je to ale způsobeno něčím jiným, tak na to zkusím přijít
asi jsem špatně pochopil rozdíl mezi setInterval a setTimeout - myslel jsem, že timeout je jedno spuštění za čas a interval je spouštění pořád dokola, dokud ho nevypnu (clearInterval), tj. timeout bych musel volat pokaždé znova při nějaké události (např. onLoad u body)
To CZechBoY :
no, abych interval ukončil po uplynutí, používám clearInterval, ale já potřebuju na nějaké tlačítko namapovat jinou funkci/příkaz, který mi ukončí funkci/interval - v podstatě jde o externí Zrušit
asi sem napíšu rovnou tu část kódu, o kterou mi jde:
function ohen_funkce_jednu_minutu()
{
cas = 60;
var cas_prace_ohen = setInterval(function () {
document.getElementById("prace_cas_id").value = cas;
cas--;
if (cas==(-1)) {cas_prace_ohen = clearInterval(cas_prace_ohen);
exps();
alert("Práce byla dokončena!");}
}, 1000);
}
function exps(){
if (window.XMLHttpRequest) {xmlhttp=new XMLHttpRequest();}
else {xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
xmlhttp.onreadystatechange=function() {
if ((xmlhttp.readyState==4) && (xmlhttp.status==200))
{document.getElementById("expy").innerHTML=xmlhttp.responseText;}
//else {alert("Vámi definovaný prostředek nelze nalézt!");}
}
var uzivatel = document.getElementById("name_user_id").innerHTML;
xmlhttp.open("GET","ajax_expy.php?user=" + uzivatel,true);
xmlhttp.send();
}
ta první funkce řeší odpočítávání a ta druhá zápis přes ajax, já potřebuju tu první kdykoli přerušit a celé se to má chovat, jako bych ji ani nespustil
Dobrý den,
potřeboval bych poradit, jak přerušit běžící rekurzivní (snad to říkám správně) funkci v javascriptu.
Jde o to, že si z mysql načtu hodnotu do php a v javascriptu si nastavím čas, po jehož uplynutí (setInterval) se tato hodnota změní a pomocí ajax se zapíše zpět do mysql. Co když ale nechci, aby ten čas uplynul a abych to mohl kdykoli přerušit. Tlačítko, které funkci vyvolá je ve formuláři, zkoušel jsem reset, ale ten nefungoval, jiná funkce se nedostane přes interval té mojí, takže mě zatím nenapadá, jak to vyřešit.
Děkuji, Harpener.
Tak jsem to nakonec opravdu zprovoznil přes výstupní hodnotu
echo "<span style=\"color:red;\">"."tento nick již používá jiný uživatel"."</span>";
v souboru ajax_login.php, už jsem to zkoušel předtím, ale to jsem si hrál s tagem script, protože mám dokumenty převážně v php a ono to jde i bez něj. Takže všem děkuju za rady. Mějte se.
Dobrý den,
obracím se na toto fórum, protože se mi nedaří najít chybu ve svém kódu.
Toto je jeho úryvek:
<script charset="utf-8" type="text/javascript">
function username(str)
{if (window.XMLHttpRequest) {xmlhttp=new XMLHttpRequest();}
else {xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
xmlhttp.onreadystatechange=function() {
if ((xmlhttp.readyState==4) && (xmlhttp.status==200))
{document.getElementById("nick_place").innerHTML=xmlhttp.responseText;
var nickplace = document.getElementById("nick_place").innerText;
var text = "tento nick již používá jiný uživatel";
var text2 = "tento nick nemá žádný uživatel"; //čistě pro ukázku
if (nickplace == text)
{document.getElementById("nick_place").style.color="red";}
else {document.getElementById("nick_place").style.color="green";}
}
}
xmlhttp.open("GET","ajax_login.php?login=" + str,true);
xmlhttp.send();
}
</script>
Jde o ajax doplněk k php, mysql a javascriptu. Funkce xmlhttp.responseText mi vrátí text do buňky s id nick_place. Do str parametru se nahrává právě onen nick, který se porovnává s databází. Vše chodí, jak mí, dokud nedojde na podmínku, která má dané oznámení, zda se přezdívka může použít, přebarvit na červenou, nebo zelenou. Porovnávám zde dva shodné texty, což jsem si ověřil přes výpisy, ale podmínka zarputile provádí else možnost. Snad jsem uvedl dostatek informací. Upozorňuji, že ono oznámení je správné, jen je pořád zelené.
Předem děkuji za pomoc,
Harpener
To MYZA : Čip nemusí být zničený, ale takhle napřímo to připojit nemůžeš. Musíš třeba použít nějaký H-můstek. Např. pro 2 DC motory nebo 1 krokový ti třeba stačí L293D nebo SN754410. Pro přesné zapojení a funkci se podívej na datasheet onoho obvodu.
olouvám se za chybu myslím c++
AHojte,jsem uplný začátečník v programování a chtěl bych se naučit c+,potřeboval bych poradit jakou literaturu si mám zakoupit nebo sosnout ve formně E-BOOK.
Velmi vám děkuji za pomoc.
bigosh