387
Java programozas, javascript
-
#347 Rég jQ-ztam, de alapvetően így kellene:
function getPPData ( id ){
return $.post('list.php', { holder: id });
}
function putPPData ( data, target ){
target.append( data );
}
$('#ppScanned').blur(function(){
var ppID = $('#ppScanned').val();
if ( ppID !== "" ){
// $.ajaxSetup({async:false}); //szerintem erre semmi szükség
var target = $( '#cLeft' );
getPPData(ppID).done(function(ppData) {
alert ( "2\r\n" + ppData );
putPPData ( ppData, target );
});
}
});
Lényeg hogy a promise blokkban kell mindent csinálni, amivel meg akarod várni az eredményt. Több XHR hívást is végezhetsz szimultán, azokat így tudod megvárni:
var xhr1 = $.ajax();
var xhr2 = $.ajax();
$.when(xhr1, xhr2).done(function(xhr1Response, xhr2Response){
})
Olvasgass a Deferred és Promise témakörökben. Jó cuccok:)
Utoljára szerkesztette: MerlinW, 2017.02.05. 14:26:16 -
#346 'reggelt!
Van egy oldalam, rajta egy egyszerű jQuery post, ami az eredményét hozzáfűzi egy div tartalmához. Működik.
Most szétszedném három részre a dolgot: lenne egy fánksön, ami postol és visszaadja az eredményt, egy, ami ezt megkapja és hozzáfűzi valamihez, és egy (vagy több), ami ezeket használja. Megírtam a kódot így:
function getPPData ( id ){
$.post('list.php', { holder: id }).done(function(data){
alert ( "1\r\n" + data );
return data;
});
}
function putPPData ( data, target ){
target.append( data );
}
$('#ppScanned').blur(function(){
var ppID = $('#ppScanned').val();
if ( ppID !== "" ){
$.ajaxSetup({async:false});
var target = $( '#cLeft' );
var ppData = getPPData ( ppID );
alert ( "2\r\n" + ppData );
putPPData ( ppData, target );
}
});
De nem működik. A szegényember-debugja-alert szerint az async ki van kapcsolva, megtörténik az 1. lépés (post, az adatok megjönnek), aztán a 2., de ott a ppData = undefined. Mi a gond? Rosszul adom vissza a post ereményét a returnnel?
Utoljára szerkesztette: 355, 2017.02.05. 11:32:31 -
#345 Még szebb megoldás, kód duplikáció nélkül:
$(window).resize(function () {
}).resize();
A végén a .resize(); triggereli a resize függvényt induláskor.
Utoljára szerkesztette: MerlinW, 2017.01.23. 10:53:15 -
Bandee28 #344 Köszönöm, így már jó. -
#343 Pont azért mert resize eseményben vannak a funkciók. Csinálj a resize-on belüli tevékenységből egy függvényt és hívd meg onready-kor (esetleg $(window).load()-ban) és resize event esetén is. Legyél moduláris:)
onReady {
függvény();
window.resize {
függvény();
}
}
Utoljára szerkesztette: MerlinW, 2017.01.21. 15:41:44 -
Bandee28 #342 Most is így van a resize , majd a hover funkciók benn vannak egy document.ready-ben. Csak akkor műxik, ha átméretezem a böngésző ablakát. -
#341 $(document).ready()
Utoljára szerkesztette: MerlinW, 2017.01.20. 21:44:27 -
Bandee28 #340 Jonnyka, Malakai azt hogy kell megoldani, hogy ne csak átméretezéssel (resize) számítsa ki a felirat pozícióját, hanem már azzal hogy megnyitom a weblapot?
Thx -
Bandee28 #339 Köszi sikerült hála nektek.
Az utolsó 2 sort kellett picit átírni:
.
.
.
pixelLeft = $(window).width() *( (100 - ((move / $(window).width()) * 100)) / 100);
$('#'+liki+':hover').find('.text').css('left', pixelLeft + 'px');
});
}); -
Bandee28 #338 Nem tom mi a baj, ilyen bénán rakta be.
<nav role='navigation'>
<ul class="topnav clearfix" id="myTopnav">
<li id="li1" class="trans" >
<a class="link-1 entypo-user " href="#home">
<span class="text" data-textId="li1">Bemutatkozás
</span>
</a>
</li>
<li id="li2" class="trans" >
<a class="link-2 entypo-book-open " href="#clients">
<span class="text" data-textId="li2">Mi is ez?</span>
</a>
</li>
<li id="li3" class="trans" >
<a class="link-3 entypo-basket " href="#about">
<span class="text" data-textId="li3">Árajánlat</span>
</a>
</li>
<li id="li4" class="trans" >
<a class="link-4 entypo-mail " href="#contact-us">
<span data-textId="li4" class="text">Kapcsolat</span>
</a>
</li>
</ul>
<a href="javascript:void(0);" onclick="myFunction12()">
<span id="navmin-icon">
<b style="font-size: 15px; position:relative; bottom: 6px;">MENU</b> <b>☰</b></span>
</a>
</nav>
Utoljára szerkesztette: Bandee28, 2017.01.20. 18:13:01 -
Bandee28 #337 Itt a html kód. Ja igen és 4 gomb van. Megpróbáltam nem mükszik.
<nav role='navigation'>
<ul class="topnav clearfix" id="myTopnav">
<li id="li1" class="trans" ><a class="link-1 entypo-user " href="#home"> <span class="text" data-textId="li1">Bemutatkozás</span></a></li>
<li id="li2" class="trans" ><a class="link-2 entypo-book-open " href="#clients"><span class="text" data-textId="li2">Mi is ez?</span></a></li>
<li id="li3" class="trans" ><a class="link-3 entypo-basket " href="#about"><span class="text" data-textId="li3">Árajánlat</span></a></li>
<li id="li4" class="trans" ><a class="link-4 entypo-mail " href="#contact-us"><span data-textId="li4" class="text">Kapcsolat</span></a></li>
</ul>
<a href="javascript:void(0);" onclick="myFunction12()"><span id="navmin-icon"><b style="font-size: 15px; position:relative; bottom: 6px;">MENU</b> <b>☰</b></span></a>
</nav>
Utoljára szerkesztette: Bandee28, 2017.01.20. 17:40:25 -
#336 #magicnumbers -
#335 #ihateyou -
#334 Az egy sor sem jó. Readability Jonny, readability!!44 :) -
#333 jó most írjam meg egy sor kódból?
alapból az egész logikája kurvakomplex, de igazad van, a switch picit jóabb -
#332 Complexity Jonny, complexity!! :D
$(window).resize(function () {
$('nav ul li.trans').hover(function () {
var liId = $(this).attr('id'),
move = 0,
pixelLeft;
switch (liId) {
case 'li1':
move = 341;
break;
case 'li2':
move = 241;
break;
case 'li3':
move = 170.5;
break;
case 'li4':
move = 94.7;
break;
}
pixelLeft = $(window).width() * (100 - ((move / $(window).width()) * 100) / 100);
$('#li1:hover').find('.text').css('left', pixelLeft + 'px');
});
});
-
#331 1) miért tudna a ff console a liki változódról? hol van hozzáadva a window-hoz?
2) html kódot is adsz mellé?
3) használd kérlek a code tag-et, úgy még látszana is valami
4) minek a String() ?
5) :D az ifjeidben egy darab egyenlőségek, tehát értékadások vannak, persze hogy nem működik :)
6) minek a 8 var? tetején deklarálod üresen, aztán meg... hát igazából nem is kell var
7) deklarálod a liki-t (jó beszédes), aztán meg nem használod..
8) a logikád elég fura, pakolászod az eventeket a resize-ra meg a hoverre a végtelenségig, átgondolnám
így már kinéz valahogy, meg működik is
$(window).resize(function() {
$('nav ul li.trans').hover(function() {
var liId = $(this).attr('id'),
move = 0,
pixelLeft;
if (liId === 'li1') {
move = 341;
}
else if (liId === 'li2') {
move = 241;
}
else if (liId === 'li3') {
move = 170.5;
}
else if (liId === 'li4') {
move = 94.7;
}
pixelLeft = $(window).width() * (100 - ((move / $(window).width()) * 100) / 100);
$('#li1:hover').find('.text').css('left', pixelLeft + 'px');
});
});
Utoljára szerkesztette: j0nNyKa, 2017.01.20. 15:56:04 -
Bandee28 #330 Üdv,
Nézzetek rá erre a kódra, valamiért nem műxik. Van egy menűsorom rajta 4 gombbal, ami érzékeny lenne a weblap szélességének változtatására, ha egy gomb fölé viszem az egeret egy kis felirat jelenik meg felette. A felirat position: absolute -ra van állítva, ha változtatom a böngészőm szélességét a felirat már rossz helyen jelenik meg, ezt próbáltam megoldani. Légyszí nézzétek át, lehet hogy csak szintaktikai hiba van.
$(window).resize(function() {
$('nav ul li.trans').hover(function(){
var liki = $(this).attr('id');
if ($(this).attr('id') = "li1") {
var actualLeft = 100 - ((341 / $(window).width())* 100);
var pixelLeft= $(window).width() * (actualLeft / 100);
$('#li1:hover .text').css('left', String(pixelLeft)+'px');
} else if ($(this).attr('id') = "li2") {
var actualLeft = 100 - ((241 / $(window).width())* 100);
var pixelLeft= $(window).width() * (actualLeft / 100);
$('#li2:hover .text').css('left', String(pixelLeft)+'px');
} else if ($(this).attr('id') = "li3") {
var actualLeft = 100 - ((170.5 / $(window).width())* 100);
var pixelLeft= $(window).width() * (actualLeft / 100);
$('#li3:hover .text').css('left', String(pixelLeft)+'px');
} else if ($(this).attr('id') = "li4") {
var actualLeft = 100 - ((94.7 / $(window).width())* 100);
var pixelLeft= $(window).width() * (actualLeft / 100);
$('#li4:hover .text').css('left', String(pixelLeft)+'px');
}
});
});
Az az érdekes hogy a firefox konzolba a "liki" -re is not defined-ot ír. -
#329 Azt hittem a nagy képről való lehúzásra akarja eltüntetni a képet :D A kód elemzésébe nem volt tegnap este türelmem belemenni, köszi neked:) -
Bandee28 #328 Köszönöm a válaszotokat: maLakai, MerlinW . Átírom, most már működik. -
#327 Azon kívül, hogy elég össze-vissza ahogy írtad a javascriptet a konkrét problémád forrása, hogy akkor hozod létre a listenert, amikor az egér már rajta van a td-n. A js engine úgy működik, hogy mouseleave csak akkor lehet, ha volt mouseenter, amit addig nem érzékelt, mert nem is figyelte (első alkalommal nem volt még semilyen listener, se enter, se leave).
Ha kiemeled a listenert kívülre és előrre regisztrálod, akkor meg is van oldva.
Egy kis takarítás/egyszerüsítéssel ez kb így néz ki.
Pár egyéb:
- Ennyi alapján kephover class-t feleslegesen pakolászod le-fel, nem tudom miért nincs eleve a megjelenítő div-en.
- Kondíciók a listenerekben fussanak, ne pedig a listenereket cserélgesd/pakolásszad egymásra.
- Nézz picit utána mi mikor fut le javascript-ben, pl amit alján tesztelsz, hogy klikk az 2, akkor myFunction1-et használd az soha nem fog teljesülni, azon a ponton a klikk mindig 1, mivel az lefut mindenféle kattintás előtt. -
#326 $(this).hover(function() {
$('.zoom_01').mouseleave(function(){
$('.kephover').slideUp("500");
klikk= 1;
});
helyett így:
$('#vetito').mouseleave(function(){
$('.kephover').slideUp("500");
klikk= 1;
}); -
Bandee28 #325 Üdv,
Ránéznétek erre a kis progira ? Az a lényeg hogy ha rákattintok a kis képekre, megjelenik egy div-be nagyobba. Majd úgy lehet eltüntetni hogy még egyszer rákattintok a kis képre vagy leviszem róla a kurzort. Ha megnézitek a hover nem jól működik, mert csak akkor reagál, ha leviszem a kis képről a kurzort, majd visszahelyezem rá és csak akkor tűnik el a kép, ha ezután lehúzom a kurzort. Ha ezt egyszer megcsinálom utána már jó. Valaki megoldást rá?
Itt a progi
Utoljára szerkesztette: Bandee28, 2016.12.26. 21:56:28 -
#324 Bakker, a :hidden. A toggle hiddenre állít mindent, így aztán nincs reset. Hüje, aki kopipészttel programoz :) -
#323 'reggelt!
Van egy tök egyszerűnek tűnő scriptem, mégse megy.
$( '#bugForm' ).toggle( 750, function(){
$(':input','#bugForm')
.not(':button, :submit, :reset, :hidden')
.val('')
.removeAttr('checked')
.removeAttr('selected');
});
Ha futtatom, nem történik meg a form reset. Ha simán kiveszem a reset részt a toggle callback-jéből, akkor megtörténik, de látható, mert azonnal lefut az animáció elindulása után (és pont ezt kerülném el az elegancia végett).
Már szétgugliztam magam, de mindenhol azt írják, hogy a fenti script a jó módszer. Akkor mi a gond?
Utoljára szerkesztette: 355, 2016.12.15. 14:02:33 -
#322 AngularJS 1.6 changes, braking changes
Utoljára szerkesztette: MerlinW, 2016.11.07. 09:47:55 -
#321 Nem. Le kell töltened/telepítened a perl-t, majd parancssorból futtatni. A lenti linken le van írva lépésről lépésre.
Utoljára szerkesztette: MerlinW, 2016.04.30. 20:05:37 -
DonPedro22 #320 Köszi... és egy Notepad++al tudom futtatni? -
#319 Perl -
DonPedro22 #318 Nem vagyok egyszerű mi? :D ok itt a részlet...
# No im not making a friendly Code where you just have to start and type your shit in.
# Use brain.exe to fill in the stuff you need.
%config = (
Server => "sweetscents.com",
Path => "/cgi-bin/",
From => "admin".chr(64)."freehostia.com",
To => "Luxpower".chr(64)."web.de",
Name => "Perforin",
MSG => "$MSG"
);
$sock = new IO::Socket::INET(PeerAddr => $config{'Server'},
PeerPort => 80,
Proto => 'tcp',
Timeout => 1) || die("[+] Could not connect!\n");
$data = 'refpage=&reftitle=&Friends='.$config{'To'}.'&SenderName='.$config{'Name'}.'&From='.$config{'From'}.'&PersonalMsg='.$config{'MSG'};
$lngt = length($data); -
#317 A lényeg, hogy még véletlenül se mutass kódrészletet, mert a végén még kitaláljuk helyetted. Well done .
Illetve legközelebb se írd oda a Javascript topikban feltett kérdésed mellé, hogy nem Javascript, mert az túlságosan is felgyorsítaná a kommunikációt.
Utoljára szerkesztette: MerlinW, 2016.04.29. 19:46:38 -
DonPedro22 #316 Eltaláltad.... :) csak nem tudtam melyik topikban lenne érdemes megkérdeznem.
Találtam neten kész programokat vagy is csak a forráskódot csak annyi hogy életre kellene kelteni, de sajna nem tudom milyen nyelvben írták... -
#315 biztos vagyok benne hogy köze nem volt a kérdésnek a javascripthez -
#314 Nem. A fájl kiterjesztése legyen .js
Hozz létre egy új fájlt .html kiterszesztéssel és írd bele:
<script type="text/javascript" src="valami.js"></script>
Majd dupla katt a html fájlodon és a böngészőben láthatod amit a javascript-ed csinál, -
DonPedro22 #313 Ha txt-ben kapok egy komplett programot azt hogy tudom átalakítani működő programmá? mármint hogy csinálhatok exe file-t belőle? látszik nem értek a programozáshoz :P -
#312 Kösz' a tippet! A dateISO-t nem maskként kezeli, úgyhogy nem hiszem, hogy tartalmat adna, de holnap kipróbálom.
Azért sem hiszem, mert ha megadok %-ot, akkor az üresen hagyott saleBeg-et kihagyottnak jelzi és nem érvénytelen formátumúnak. -
#311 Most csak gyorsban: nem lehet hogy a dateISO miatt mindig van tartalom? Írasd ki konzolba az inputok tartalmát. -
#310 'estét! Kéne segítség (megint), most a jQuery Validation plugin használatában.
Van 3 inputom: saleBeg, saleEnd (leértékelés első és utolsó napja) és salePerc (árengedmény). Ezt szeretném összehozni:
- ha van saleBeg, kell lennie salePercnek is;
- ha van saleEnd, kell lennie saleBegnek is és ennek egyenlőnek vagy nagyobbnak kell lennie annál (megoldva: greaterOrEqual);
- ha van salePerc, annak 1 és 100 között kell lennie és kell lennie legalább saleBegnek.
Itt tartok:
saleBeg : {
dateISO : true,
required : function ( ) {
return ( $ ( '#saleEnd' ) . not ( ':empty' ) ? true : false ) ;
}
} ,
saleEnd : {
dateISO : true ,
greaterOrEqual : '#saleBeg'
} ,
salePerc : {
required : function ( ) {
return ( $ ( '#saleBeg' ) . not ( ':empty' ) ? true : false ) ;
} ,
number : true ,
range : [ 1 , 100 ]
}
Ha ki vannak töltve a mezők bármilyen csoportban, az ellenőrzés jól működik.
A hiba az, hogy nem kéne neki, de mégis megköveteli mind a három mező kitöltését, ha mind a három üres (mert nem akciós a cucc). Mit írtam rosszul? -
#309 Valami ilyesmi most a dolog:
karma-common.js:
var defaultVariables = {
"globalConfig": {"SERVER_URL": "http://testServerPath/"}
};
var defaultDependencies = {
"$httpBackend": "$httpBackend",
"$rootScope": "$rootScope",
"$timeout": "$timeout",
"$interval": "$interval",
"$controller": "$controller",
"$state": "$state"
};
var testHttpMock = function (method, mockUrl, httpResponseMock, dataPromise) {
$httpBackend.expect(method, mockUrl).respond({data: httpResponseMock});
var functionResult;
dataPromise.then(function (response) {
functionResult = response.data;
});
$httpBackend.flush();
return functionResult;
};
var testInjectVariables = function (variables) {
if (defaultVariables) {
angular.forEach(defaultVariables, function (variableValue, variableName) {
window[variableName] = variableValue;
});
}
if (variables) {
angular.forEach(variables, function (variableValue, variableName) {
window[variableName] = variableValue;
});
}
};
var testInjectDependencies = function (dependencies) {
return inject(function ($injector) {
/*jslint evil: true */
if (defaultDependencies) {
angular.forEach(defaultDependencies, function (dependencyValue, dependencyName) {
window[dependencyName] = eval($injector.get(dependencyValue));
});
}
if (dependencies) {
angular.forEach(dependencies, function (dependencyValue, dependencyName) {
window[dependencyName] = eval($injector.get(dependencyValue));
});
}
})
};
*.spec.js
describe('testSomething', function () {
//-----------------------------------------------------------------------------------
//UNIT GLOBALS
var variables = {};
var dependencies = {};
//-----------------------------------------------------------------------------------
beforeEach(function () {
//MODULE INJECTION
module("ngHRM.admin");
//SERVICE INJECTION
dependencies.CustomConstants = "CustomConstants";
dependencies.CustomizerService = "CustomizerService";
//VARIABLE INJECTION
variables.something = {"key": "value"}};
variables.something_more = "foo";
//PROVIDERS
module(function ($provide) {
//VALUES -> $provide.value('variable', variable);
//SERVICES -> $provide.service('ServiceName', function () {}
//FUNCTIONS -> this.variable = jasmine.createSpy('variable').and.callFake(function () { return result; });
});
});
//-----------------------------------------------------------------------------------
//LOAD THIS IN EVERY <it>
function doInject() {
//AUTOMATIC DEPENDENCY INJECTION
testInjectVariables(variables);
testInjectDependencies(dependencies);
//CUSTOM INJECTIONS
inject(function () {
//SCOPE -> scope = $rootScope.$new();
//SPY -> spyOn(,);
//CTRL -> controller = $controller('controllerName', { $scope: scope, $state: state });
});
}
//-----------------------------------------------------------------------------------
//DEFAULT afterEach if we have $httpBackend injected
afterEach(function () {
if (defaultDependencies.$httpBackend) {
$httpBackend.verifyNoOutstandingExpectation();
$httpBackend.verifyNoOutstandingRequest();
}
});
// ------------------------------------ TEST CASES ---------------------------------------
it('should happen something', function () {
doInject();
});
});
-
#308 Az már más:) így érthetőbb