javascript wordt niet opgeroepen

Status
Niet open voor verdere reacties.

jorre13

Gebruiker
Lid geworden
8 feb 2007
Berichten
27
Wat doe ik verkeerd??

dit is mijn link waar ik het javascriptje oproep:

Code:
<a href="javascript:TCP.popup(document.forms['tcp_test'].".elements['a:hover_color'].")"><img border="0" alt="Click Here to Pick up the color" src="../../images/sel.gif"></a>


dit staat in mijn header:

Code:
<script language=JavaScript src="picker.js"></script>

dit is de javascript, maar waarschijnlijk is er hier niks mis mee want het heeft al gewerkt:

Code:
var TCP = new TColorPicker();

function TCPopup(field, palette) {
	this.field = field;
	this.initPalette = !palette || palette > 3 ? 0 : palette;
	var w = 194, h = 240,
	move = screen ? 
		',left=' + ((screen.width - w) >> 1) + ',top=' + ((screen.height - h) >> 1) : '', 
	o_colWindow = window.open('picker.html', null, "help=no,status=no,scrollbars=no,resizable=no" + move + ",width=" + w + ",height=" + h + ",dependent=yes", true);
	o_colWindow.opener = window;
	o_colWindow.focus();
}

function TCBuildCell (R, G, B, w, h) {
	return '<td bgcolor="#' + this.dec2hex((R << 16) + (G << 8) + B) + '"><a href="javascript:P.S(\'' + this.dec2hex((R << 16) + (G << 8) + B) + '\')" onmouseover="P.P(\'' + this.dec2hex((R << 16) + (G << 8) + B) + '\')"><img src="/img/pixel.gif" width="' + w + '" height="' + h + '" border="0"></a></td>';
}

function TCSelect(c) {
	this.field.value = '#' + c.toUpperCase();
	this.win.close();
}

function TCPaint(c, b_noPref) {
	c = (b_noPref ? '' : '#') + c.toUpperCase();
	if (this.o_samp) 
		this.o_samp.innerHTML = '<font face=Tahoma size=2>' + c +' <font color=white>' + c + '</font></font>'
	if(this.doc.layers)
		this.sample.bgColor = c;
	else { 
		if (this.sample.backgroundColor != null) this.sample.backgroundColor = c;
		else if (this.sample.background != null) this.sample.background = c;
	}
}

function TCGenerateSafe() {
	var s = '';
	for (j = 0; j < 12; j ++) {
		s += "<tr>";
		for (k = 0; k < 3; k ++)
			for (i = 0; i <= 5; i ++){
				s += this.bldCell(k * 51 + (j % 2) * 51 * 3, Math.floor(j / 2) * 51, i * 51, 8, 10);
			}
		s += "</tr>";
	}
	return s;
}
function TCGenerateMac() {
	var s = '';
	var c = 0,n = 1;
	var r,g,b;
	for (j = 0; j < 15; j ++) {
		s += "<tr>";
		for (k = 0; k < 3; k ++)
			for (i = 0; i <= 5; i++){
				if(j<12){
				s += this.bldCell( 255-(Math.floor(j / 2) * 51), 255-(k * 51 + (j % 2) * 51 * 3),255-(i * 51), 8, 10);
				}else{
					if(n<=14){
						r = 255-(n * 17);
						g=b=0;
					}else if(n>14 && n<=28){
						g = 255-((n-14) * 17);
						r=b=0;
					}else if(n>28 && n<=42){
						b = 255-((n-28) * 17);
						r=g=0;
					}else{
						r=g=b=255-((n-42) * 17);
					}
					s += this.bldCell( r, g,b, 8, 10);
					n++;
				}
			}
		s += "</tr>";
	}
	return s;
}
function TCGenerateWind() {
	var s = '';
	for (j = 0; j < 12; j ++) {
		s += "<tr>";
		for (k = 0; k < 3; k ++)
			for (i = 0; i <= 5; i++)
				s += this.bldCell(i * 51, k * 51 + (j % 2) * 51 * 3, Math.floor(j / 2) * 51, 8, 10);
		s += "</tr>";
	}
	return s	
}

function TCGenerateGray() {
	var s = '';
	for (j = 0; j <= 15; j ++) {
		s += "<tr>";
		for (k = 0; k <= 15; k ++) {
			g = Math.floor((k + j * 16) % 256);
			s += this.bldCell(g, g, g, 9, 7);
		}
		s += '</tr>';
	}
	return s
}

function TCDec2Hex(v) {
	v = v.toString(16);
	for(; v.length < 6; v = '0' + v);
	return v;
}

function TCChgMode(v) {
	for (var k in this.divs) this.hide(k);
	this.show(v);
}

function TColorPicker(field) {
	this.build0 = TCGenerateSafe;
	this.build1 = TCGenerateWind;
	this.build2 = TCGenerateGray;
	this.build3 = TCGenerateMac;
	this.show = document.layers ? 
		function (div) { this.divs[div].visibility = 'show' } :
		function (div) { this.divs[div].visibility = 'visible' };
	this.hide = document.layers ? 
		function (div) { this.divs[div].visibility = 'hide' } :
		function (div) { this.divs[div].visibility = 'hidden' };
	// event handlers
	this.C       = TCChgMode;
	this.S       = TCSelect;
	this.P       = TCPaint;
	this.popup   = TCPopup;
	this.draw    = TCDraw;
	this.dec2hex = TCDec2Hex;
	this.bldCell = TCBuildCell;
	this.divs = [];
}

function TCDraw(o_win, o_doc) {
	this.win = o_win;
	this.doc = o_doc;
	var 
	s_tag_openT  = o_doc.layers ? 
		'layer visibility=hidden top=54 left=5 width=182' : 
		'div style=visibility:hidden;position:absolute;left:6px;top:54px;width:182px;height:0',
	s_tag_openS  = o_doc.layers ? 'layer top=32 left=6' : 'div',
	s_tag_close  = o_doc.layers ? 'layer' : 'div'
		
	this.doc.write('<' + s_tag_openS + ' id=sam name=sam><table cellpadding=0 cellspacing=0 border=1 width=181 align=center class=bd><tr><td align=center height=18><div id="samp"><font face=Tahoma size=2>sample <font color=white>sample</font></font></div></td></tr></table></' + s_tag_close + '>');
	this.sample = o_doc.layers ? o_doc.layers['sam'] : 
		o_doc.getElementById ? o_doc.getElementById('sam').style : o_doc.all['sam'].style

	for (var k = 0; k < 4; k ++) {
		this.doc.write('<' + s_tag_openT + ' id="p' + k + '" name="p' + k + '"><table cellpadding=0 cellspacing=0 border=1 align=center>' + this['build' + k]() + '</table></' + s_tag_close + '>');
		this.divs[k] = o_doc.layers 
			? o_doc.layers['p' + k] : o_doc.all 
				? o_doc.all['p' + k].style : o_doc.getElementById('p' + k).style
	}
	if (!o_doc.layers && o_doc.body.innerHTML) 
		this.o_samp = o_doc.all 
			? o_doc.all.samp : o_doc.getElementById('samp');
	this.C(this.initPalette);
	if (this.field.value) this.P(this.field.value, true)
}
 
Wat doe ik verkeerd??

dit is mijn link waar ik het javascriptje oproep:

Code:
<a href="javascript:TCP.popup(document.forms['tcp_test'].".elements['a:hover_color'].")"><img border="0" alt="Click Here to Pick up the color" src="../../images/sel.gif"></a>
Je gebruikt quotes (") binnen quotes en de functie heet TCPopup en niet TCP.popup

En ik dacht dat een : in de naam van een formulierveld niet kon. :confused:

Probeer eens met a_hover_color
PHP:
<a href="javascript:TCPopup(document.tcp_test.a_hover_color)">
:)


Vr.Gr. Egel.
 
bedankt om te helpen, maar ... ik ben niet geholpen.

De voorgestelde oplossing zou inderdaad qua opbouw moeten werken maar in mijn geval dus niet, waarschijnlijk ligt het nog ergens anders aan.

Moest je me een andere oplossing voor een colorpicker kunnen aanbieden zou ik ook heel content zijn zen.

Alvast bedankt


edit:

als ik deze regel toevoeg:
Code:
<a href="javascript:TCPopup(document.forms['tcp_test'])">

dan krijg ik al de popup, maar wanneer ik klik op een kleur dan wordt deze nog niet ingevuld.

Hiervoor diende dat tweede stuk, iemand een idee hoe ik dat er terug bijplak??
 
Laatst bewerkt:
Probeer het eens hiermee:
PHP:
<a href="javascript:TCPopup(document.tcp_test.a_hover_color)">test</a>
<a href="javascript:TCPopup(document.tcp_test.a_hover_color,1)">test 1</a>

<form name="tcp_test">
 <input name="a_hover_color" type="text" size="8">
</form>
Ik 'krijg bestand niet gevonden' omdat ik picker.html niet heb, maar er is zo wel een goed formulierveld ingevuld waar de waarde in zou kunnen verschijnen. :)


Vr.Gr. Egel.
 
hey

alvast bedankt om er je tijd in te steken, maar bij mij werkt het nog steeds niet. Hij roept wel degelijk de file al op. Dus als ik goed kan volgen is er een fout in de picker.html.

Bij deze zal ik de file bijvoegen.

Code:
<html>
<head>
	<title>Tigra Color Picker</title>
	<style>
		.bd { border : 1px inset InactiveBorder; }
		.s  { width:181 }
	</style>
</head>
<body leftmargin="5" topmargin="5" marginheight="5" marginwidth="5" onLoad="P.C(P.initPalette)">
<table cellpadding=0 cellspacing=2 border=0 width=184>
<form>
<tr><td align="center">
<select name="type" onChange="P.C(this.selectedIndex)" class="s">
	<option>Web Safe Palette</option>

	<option>Windows System Palette</option>
	<option>Grey Scale Palette</option>
	<option>Mac OS Palette</option>
</select>
</td></tr>
<tr><td align="center">
<script language="JavaScript">
	var P = opener.TCP;
	onload = "P.show(P.initPalette)";
	document.forms[0].elements[0].selectedIndex = P.initPalette;
	P.draw(window, document);
</script>
</td></tr>
</form>
</table>

</body>
</html>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan