V dokumentu mám zmenšený obrázek: <img id="img_1A" width="300" src="http://....kal1a.jpg" />
a v menu 2 odkazy:
1. Najede na obrázek (bez JS): <a href="#img_1A">small</a>
2. Otevře okno s originálem: <a href="#img_1A"
onclick='return !window.open(document.getElementById(this.href.match(/#.+/).substring(1)).src,"_blank")' >big</a>
Evidentně mám všechno v cajku - testoval jsem:
this.href --> "file://localhost/C:/WWW,%20js%20%26%20html/FORUM/2float%20rolovaci/html_fixed.html#img_1A"
this.href.match(/#.+/) --> "#img_1A"
No a substring, getElementById, w.open znám jak své boty; přesto to nešlape - že by DEN BLBEC ???
Fórum › JavaScript, AJAX, jQuery
Nekorektní řetězcové operace /nebo překlep/
Tak som na to mrkol, a prišiel som na to, že typeof String.match(..) ==> object, a nie string !!! (lebo môže vrátiť aj null)
alert( typeof 'abc'.match(/b/) );
[podtrzene]takže to treba previesť na string:[/podtrzene]
String(this.href.match(/#.+/)).substring(1);
(""+this.href.match(/#.+/)).substring(1);
Díky za vysvětlení, já jsem to sice nakonec "přinutil" fungovat:
function ukaz(a){ a=a.href.match(/#.+/)+""; a=document.getElementById(a.substring(1)); return !window.open(a.src,"_blank") }
Ale nenapadlo mě proč tomu tak je => konzole mě zblbla tím vypsaným řetězcem.
Taky dík za odkaz na prima web Essential Javascript -- A Javascript Tutorial
Dobře se s ním pracuje [ :-( bohužel JS specifikace to není a u metody match se hovoří jen o řetězcových fn.hodnotách ]
ANI NA: http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:String:match
SE NEUMĚJÍ JASNĚ VYJÁDŘIT:
match(regexp) [podtrzene]Description[/podtrzene]
If the regular expression does not include the g flag, returns the same result as regexp.exec(string).
If the regular expression includes the g flag, the method returns an Array containing all matches.
STAČILO BY ŘÍCT, ŽE FUNKCE VRACÍ Array S VÝSLEDK(Y/EM) ANEBO null
alert( 'abc'.match(/b/) instanceof Array ) --> true
_________________________________________________________________________________
Takže lze také: this.href.match(/#.+/)[0].substring(1)
popř: this.href.match(/#.+/).toString().substring(1)
_________________________________________________________________________________
Výsledek se dá získat i bez substring(1): this.href.match(/#(.+)/)[1]
Nebo: this.href.replace(/.*#/,"")
Ja som skúsil typeof 'abc'.match('b') a vyhodilo mi to object, tak som ďalej neskúmal.
Ale ako tak čítam:
ANI NA: developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:String:match
SE NEUMĚJÍ JASNĚ VYJÁDŘIT:match(regexp) [podtrzene]Description[/podtrzene]
If the regular expression does not include the g flag, returns the same result as regexp.exec(string).
If the regular expression includes the g flag, the method returns an Array containing all matches.
Tak som mrkol na http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:RegExp:exec
a je to tam čierne na bielom:
Takže to súhlasí sIf the match succeeds, the exec method returns an array and updates properties of the regular expression object. If the match fails, the exec method returns null.
Petroff píše:#
# STAČILO BY ŘÍCT, ŽE FUNKCE VRACÍ Array S VÝSLEDK(Y/EM) ANEBO null
Potvrdzuje to aj ECMA-262, Edition 3
http://www.ecma-international.org/publications/files/ecma-st/ECMA-262.pdf (strana 102)
15.5.4.10 String.prototype.match (regexp)
If regexp is not an object whose [[Class]] property is "RegExp", it is replaced with the result of the expression new RegExp(regexp). Let string denote the result of converting the this value to a string. Then do one of the following:
• If regexp.global is false: Return the result obtained by invoking RegExp.prototype.exec (see 15.10.6.2) on regexp with string as parameter.
• If regexp.global is true: Set the regexp.lastIndex property to 0 and invoke RegExp.prototype.exec repeatedly until there is no match. If there is a match with an empty string (in other words, if the value of regexp.lastIndex is left unchanged), increment regexp.lastIndex by 1. Let n be the number of matches. The value returned is an array with the length property set to n and properties 0 through n–1 corresponding to the first elements of the results of all matching invocations of RegExp.prototype.exec.
http://www.ecma-international.org/publications/files/ecma-st/ECMA-262.pdf (strana 144)
15.10.6.2 RegExp.prototype.exec(string)
Performs a regular expression match of string against the regular expression and returns an Array
object containing the results of the match, or null if the string did not match
BTW: Nemožem sa prihlásiť :-(
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Nekorektní VBR — založil Matěj Andrle
Nekorektni ukonceni programu (dynamicke nasobeni matic) — založil petrla
Software developer C++ nebo C# nebo Java (Android) se znalostí AJ — založil Kateřina Mrkáčková
POROVNÁNÍ POLE NEBO POLOHY, nebo jinak — založil ASTONEK
Moderátoři diskuze