|
Thread Rules 1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution. 2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20) 3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible. 4. Use [code] tags to format code blocks. |
That's what the href in the buttons and the div ids are for. Change the href in the button to whatever div id you want it to affect.
So like:
<button type="button" href="#collapse1" class="nav-toggle">Button 1</button> <div id="collapse1" style="display:none;"> <p>stuff for #1 here</p> </div>
<button type="button" href="#collapse2" class="nav-toggle">Button 2</button> <div id="collapse2" style="display:none;"> <p>stuff for #2 here</p> </div>
|
Buttons don't have a "href" attribute.
|
Hyrule19060 Posts
Doesn't matter. You can make up attributes. Hell, you could use "divtohide" as an attribute, and get the value with prop() or attr()
|
On September 12 2013 01:09 tofucake wrote: Doesn't matter. You can make up attributes. Hell, you could use "divtohide" as an attribute, and get the value with prop() or attr()
Only allowed in html5, and even then this is just bad practice
|
On September 12 2013 01:14 Yoshi- wrote:Show nested quote +On September 12 2013 01:09 tofucake wrote: Doesn't matter. You can make up attributes. Hell, you could use "divtohide" as an attribute, and get the value with prop() or attr() Only allowed in html5, and even then this is just bad practice
Yeah, and if using HTML5, Data-X is the way to do that.
|
Hyrule19060 Posts
Never said it wasn't, but it's a way of doing it.
|
On September 12 2013 00:04 Yoshi- wrote: Buttons don't have a "href" attribute.
Technically no, but it works. If you're on a browser that doesn't support html 5, well, yeah...
I was just trying to give the guy a workable solution. If you want to give him a "better" one, feel free.
|
On September 12 2013 01:19 HardlyNever wrote:Show nested quote +On September 12 2013 00:04 Yoshi- wrote: Buttons don't have a "href" attribute. Technically no, but it works. If you're on a browser that doesn't support html 5, well, yeah... I was just trying to give the guy a workable solution. If you want to give him a "better" one, feel free.
Yea there is a lot of stuff that works in just fine(no doctype, not closing tags) and that you still shouldn't do, especially since "href" normally indicates a link. And what happens if they suddenly add the href tag to buttons? Then it is suddenly broken.
And and the two best options have already been posted, calling the div directly using the id or in the relation to what was clicked.
|
Then feel free to post a working solution with that method.
Or you could just keep adding nothing constructive and keep nay-saying about how everything is wrong, like half the people that post in this thread.
The guy who asked the question can choose what he wants to do. It's not like I'm forcing him to use what I posted, it is just an option. Why don't you give him a better working option, rather than just criticizing?
|
On September 12 2013 01:38 HardlyNever wrote: Then feel free to post a working solution with that method.
Or you could just keep adding nothing constructive and keep nay-saying about how everything is wrong, like half the people that post in this thread.
The guy who asked the question can choose what he wants to do. It's not like I'm forcing him to use what I posted, it is just an option. Why don't you give him a better working option, rather than just criticizing?
What is less constructive posting a flawed solution or pointing out the flaw?
|
Criticizing a working solution, without posting a better working solution, is definitely less constructive.
|
On September 12 2013 01:59 HardlyNever wrote: Criticizing a working solution, without posting a better working solution, is definitely less constructive.
There already is a working solution, that is perfectly fine and posting another one would just be redundant, and because of that not constructive.
Your solution is flawed and I pointed out the flaw, dunno how you could say that my post is less constructive than your original post.
And when you have such an hatred against non-constructiveness then why do you even argue in this thread, because this conversation is as useless as it can get.
|
On September 11 2013 20:37 adwodon wrote:Got roped into doing a bit of webstuff by my boss, not sure why as it's not my specialty, but I told him you could easily show / hide sections of text so he decided that means I'm the web guy now. On that note I have this: <script language="JavaScript" type="text/javascript"> function blocking(nr) // for displaying or hiding parts of the page { displayNew = (document.getElementById(nr).style.display == 'none') ? 'block' : 'none'; document.getElementById(nr).style.display = displayNew; } </script>
Then I have it used as follows: <div> Something <a href="" onclick="blocking('showHide1'); return false;">+</a> <div id="showHide1"> Write text here... </div> </div> <div> Something else <a href="" onclick="blocking('showHide2'); return false;">+</a> <div id="showHide2"> Write text here... </div> </div>
My question is straight forward enough, do I need to have showHide1 and showHide2 or can I do something to keep all the id's the same but still only act on the correct div tag. The way I have it working now is messy and I don't like it at all. Appreciate any help  Very simple: just pass 'this' as parameter to your javascript function as the sender, like this
function toggle(sender) { var elm = sender.getElementsByClassName("someID")[0]; elm.style.display = elm.style.display == 'none' ? 'block' : 'none'; }
Then, on the parent element, you call "toggle(this)":
<div class="showHide" onclick="toggle(this)">Some text <div class="someID">Write text here...</div> </div> <div class="showHide" onclick="toggle(this)">Sometext <div class="someID">Write text here...</div> </div>
No need for bloated jquery.
|
On September 12 2013 02:05 Yoshi- wrote:Show nested quote +On September 12 2013 01:59 HardlyNever wrote: Criticizing a working solution, without posting a better working solution, is definitely less constructive. There already is a working solution, that is perfectly fine and posting another one would just be redundant, and because of that not constructive. Your solution is flawed and I pointed out the flaw, dunno how you could say that my post is less constructive than your original post. And when you have such an hatred against non-constructiveness then why do you even argue in this thread, because this conversation is as useless as it can get.
Because half this thread is useless arguing, and I'm hoping that by pointing it out, to maybe change that. Maybe it is more useless arguing.
The only other solution posted didn't have functioning buttons, or a way to differentiate between the divs, like the guy needed. If he can take that and make buttons and separate ids with it, then fine, no problem. It wasn't exactly what he needed (it seemed) so I put what I had working.
I'm just tired of coming to this thread and seeing people constantly saying how things are wrong, without providing anyway to do it. It does nothing, it's just asshattery.
|
Hyrule19060 Posts
Pretty sure my solution had functioning buttons with differentiation between divs.
But there are plenty of people who know enough to say "that's not following the rules, even it works" but don't have the experience to provide a solution which does follow the rules. There's no need to get upset.
|
All I saw was this:
http://jsfiddle.net/yW7Yz/2/
Which didn't have buttons, or div ids (just classes). Was there something else? Either way, it seems like the guy got what he wanted, so alls-well that ends-well.
|
On September 12 2013 03:08 tofucake wrote: Pretty sure my solution had functioning buttons with differentiation between divs.
But there are plenty of people who know enough to say "that's not following the rules, even it works" but don't have the experience to provide a solution which does follow the rules. There's no need to get upset.
Getting upset and useless arguing is one of the best parts of programming, don't try to discourage...
With all these opinions one more can't hurt.
no need for bloated jquery
Hmm. This seems like bad advice. Why would you want to take the time that your js works perfectly in every browser when most web devs are doing it for you by using jquery? Use a cdn, use gzip compression, its not that big.
To the people binding the click event to the div, doesn't it feel weird? Call me old school, I prefer to use click events on things that normally support click like links and buttons but I got my start in web dev with an eye towards accessibility standards.
On making up attributes...it used to be the only way, but with data-* in html5, as a few mentioned, it just feels bizarre to suggest making up anything other than a data-* attribute. If you are going to make a name up, just always append data- in front of it and it is now valid in html5, seems easy enough.
should have buttons or something. You could probably do toggle on first child instead if you want to have a bunch of .showHides http://jsfiddle.net/yW7Yz/2/ like that
This is sound advice, with a slight modification. I have found that things like first child, direct descendent selects, next() ,previous(), parent() and sibling() in jquery are just a tad brittle because they require the exact markup structure not to change. If you are positive that you aren't going to change it in the future then of course you're fine.
Using closest() and find() in combination alleviates some of the pain. It is worth noting that lots of dom traversal is still bad -> so this is great for show hide types where you just want to operate in context of an item getting clicked, and not so great say when used in a loop of a few thousand iterations.
Example: http://jsfiddle.net/ReWEj/
|
|
On September 12 2013 10:34 berated- wrote: Hmm. This seems like bad advice. Why would you want to take the time that your js works perfectly in every browser when most web devs are doing it for you by using jquery? Use a cdn, use gzip compression, its not that big.
This particular problem can be easliy solved with standard javascript that is supported in all browsers. There are no browser-specific functions needed - just standard javascript. You don't need external files, libraries etc. Every function is builtin in the javascript engine in a browser. It is complete overkill to use jQuery for this simple problem.
|
I was wondering how variables' scope is dealt with in regards to Java GUI. Is it global or do you need to declare everything as a field? All in all, how you deal with variables? Examples would be nice if you have nearby.
|
|
|
|