By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,379 Members | 1,759 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,379 IT Pros & Developers. It's quick & easy.

programmatic menu - disappearing divs

P: n/a

Hi all.

I've been here before and got a lot of help with my neophyte troubles so I'm
back again.

This time I have a number of questions (if I can remember them all).

(I've pasted the code in question at the end of this message and installed it on
the web at http://www3.telus.net/bikim/test .)

Just for something to do I'm attempting to code a menu system that is as
programmable as I can. The first row, that I call the 'base buttons' works
mostly like I expect it to.

Q1: The problem I am having is that when I click a base button to generate a
column of similar buttons nothing appears. According to the dom inspector the
divs are being created but they just don't appear anywhere that I can find.

Q2: How can I align the text vertically in the div?

Q3: What were the rest of my questions?

------- start of code --------

// FUNCTION :: makeButtons(event)
// this handles the onclick event in a base button
// i.e. onclick = makeButtons
// Use :: supply num 'buttons'
// Receives :: number of buttons to make as int <from button clicked?>
// :: type of container to use
// Returns :: status as bool

function makeButtons(event)
{
// get parent-Button-id
var obj = event.target;
var targetId = obj.id;
var idPostfix = targetId.charAt(1);
var idBase = parseInt(targetId);
//var iD = this.id;
for(var i=0; i<=rows; i++) // get rows from functions.js
{
var bTemp = makeEl('div'); // button temp

bTemp['id'] = (i+idBase+1)+idPostfix; // from variables ???

bTemp.style.position = 'relative';
bTemp.style.left = obj.style.left;
bTemp.style.top = (parseInt(obj.style.top)+(25*(i+1)))+'px';
bTemp.style.width = 100+"px";
bTemp.style.backround = bgImg;
document.getElementById(targetId).appendChild(bTem p);
}

var mesg = '';
// mesg += 'this.id = '+pBid;
mesg += '\ntarget Id = '+targetId;
mesg += '\ntarget Id as int= '+parseInt(targetId);
mesg += '\nbTemp Id = '+bTemp["id"];
mesg += '\nidPostfix = '+idPostfix;
mesg += '\nidBase = '+idBase;
mesg += '\nobj.style.left = '+obj.style.left;
mesg += '\nobj.style.top = '+obj.style.top;
mesg += '\nbTemp.style.top = '+(parseInt(obj.style.top)+25)+'px';

alert('In makeButtons \n'+mesg);
return 'false';
}
// end of FUNCTION :: makeButtons()

---------- End of Code Snippet ----------
Thanks
--

Phil Newcombe - philn?telus?net

http://www3.telus.net/bikim

Jul 20 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a
Phil N wrote:

Hi all.
<snip>

(I've pasted the code in question at the end of this message and
installed it on the web at http://www3.telus.net/bikim/test .)

Just for something to do I'm attempting to code a menu system that is as
programmable as I can. The first row, that I call the 'base buttons'
works mostly like I expect it to.

Q1: The problem I am having is that when I click a base button to
generate a column of similar buttons nothing appears. According to the
dom inspector the divs are being created but they just don't appear
anywhere that I can find.

Q2: How can I align the text vertically in the div?
Um, "text-align: center;" and line breaks?
This may not be the question :)

------- start of code --------

// FUNCTION :: makeButtons(event)
// this handles the onclick event in a base button
// i.e. onclick = makeButtons
// Use :: supply num 'buttons'
// Receives :: number of buttons to make as int <from button clicked?>
// :: type of container to use
// Returns :: status as bool

function makeButtons(event)
{
// get parent-Button-id
var obj = event.target;
var targetId = obj.id;
var idPostfix = targetId.charAt(1);
var idBase = parseInt(targetId);
//var iD = this.id;
for(var i=0; i<=rows; i++) // get rows from functions.js
{
var bTemp = makeEl('div'); // button temp

bTemp['id'] = (i+idBase+1)+idPostfix; // from variables ???

bTemp.style.position = 'relative';
bTemp.style.left = obj.style.left;
bTemp.style.top = (parseInt(obj.style.top)+(25*(i+1)))+'px';
bTemp.style.width = 100+"px";
bTemp.style.backround = bgImg;
Wrong spelling, should be:

bTemp.style.background = bgImg;
Text color seems to inherit from the value #ffffff set in
applyBaseLabels, so without the background, any text inserted in the
bTemp appears white on white and causes test confusion.
document.getElementById(targetId).appendChild(bTem p);
}
<snip>
return 'false';
Recall function comment: // Returns :: status as bool

'false' with quotes is a string value, as is 'true'. Both will test
boolean true in a javascript conditional. To return boolean values, omit
the quotes:

return true; // or
return false; }
// end of FUNCTION :: makeButtons()


Major comment - HTML id values should start with a letter:

<cite>
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be
followed by any number of letters, digits ([0-9]), hyphens ("-"),
underscores ("_"), colons (":"), and periods (".").
</cite>

The code works in Mozilla, but you may wish to look into it.
Good luck,
Dom

Jul 20 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.