javascript - Changing .innerHTML after a button is clicked -
i using jquery mobile , have collapsible set.
when using function change innerhtml works fine. displaying content inside collapsibles.
<div id="doro" data-role="collapsibleset" data-iconpos="right" dir="rtl" align="right"> </div>
works when using: document.getelementbyid("doro").innerhtml ='<div data-role="collapsible"> <h3>click me - im collapsible!</h3> <p>i'm expanded content.</p> </div>'
but when try:
<input type="button" data-theme="b" name="submit" id="submit" value="submit" onclick="refreshpage();">
while:
function refreshpage(){ var text = "<div data-role='collapsible'><h1>click me - i'm collapsible!</h1><p>i'm expanded content.</p></div>"; document.getelementbyid("doro").innerhtml = text; }
it changes collapsible set have text without jquerymobile css , javascript attached.
that's sort of looks like
function refreshpage() { var text = "<div data-role='collapsible'><h1>click me</h1><p>i'm new expanded content.</p></div>"; document.getelementbyid("doro").innerhtml =text; }
<link href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" rel="stylesheet"/> <script src="http://code.jquery.com/jquery-1.11.2.min.js"></script> <script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> <!doctype html> <html><head> <title>my page</title> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <body> <div data-role="panel" id="left-panel" data-display="overlay"> <h2></h2> <form id="checkuser" name="checkuser" method="post" class="ui-body ui-body-a ui-corner-all"> <fieldset> <div data-role="fieldcontain"> <label for="username">enter username:</label> <input type="text" value="" name="username" id="username"/> </div> <input type="button" data-theme="b" name="submit" id="submit" value="submit" onclick="refreshpage();"> </fieldset> </form> </div> <div data-role="header"> <h1></h1> <a href="#left-panel" data-icon="gear" data-iconpos="notext">add</a> </div><!-- /header --> <div data-role="content"> <a href="#" data-role="button" data-icon="star" data-theme="a">star button</a> <p id="demo"> <div id="doro" data-role="collapsibleset" data-iconpos="right" dir="rtl" align="right"> <div data-role="collapsible"> <h3>click me - i'm collapsible!</h3> <p>i'm expanded content.</p> </div> </div></p> </div><!-- /content --> <div data-role="footer"> <h4>my footer</h4> </div><!-- /footer --> </div><!-- /page --> </body> </html>
this simplified example won't work aswell, , don't why
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <!doctype html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css"> <script src="http://code.jquery.com/jquery-1.11.2.min.js"></script> <script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> </head> <body> <div data-role="page" id="pageone"> <div data-role="header"> <h1>collapsible sets</h1> </div> <div data-role="main" class="ui-content" id="name"> </div> <script> document.getelementbyid("name").innerhtml ='<div data-role="collapsibleset"><div data-role="collapsible"><h3>click me - im collapsible!</h3><p>im expanded content.</p></div>'; function refreshpage(){ document.getelementbyid("name").innerhtml ='<div data-role="collapsibleset"><div data-role="collapsible"><h3>click me - im collapsible!</h3><p>im expanded content.</p></div>';} </script> <input type="button" data-theme="b" name="submit" id="submit" value="submit" onclick="refreshpage();"> <div data-role="footer"> <h1>insert footer text here</h1> </div> </div> </body> </html>
when dynamically creating jquery mobile widgets after page has been enhanced, have initialize widgets in 1 of following ways:
call .enhancewithin() on container element.
call individual widget intializer, e.g. .colapsibleset(), .collapsible(), etc.
for example, following. given button , container div id="name":
<div data-role="page" id="pageone"> <div data-role="header"> <h1>collapsible sets</h1> </div> <div data-role="main" class="ui-content" > <input type="button" data-theme="b" name="submit" id="submit" value="submit" /> <div id="name"></div> </div> </div>
on pagecreate, dynamically add collapsibleset container , call enhancewithin(). add click handler button calls refreshpage(). refreshpage() replaces html in container , again calls enhancewithin().
$(document).on("pagecreate", "#pageone", function(){ $("#name").html('<div data-role="collapsibleset"><div data-role="collapsible"><h3>click me - im collapsible!</h3><p>im expanded content.</p></div>').enhancewithin(); $("#submit").on("click", function(){ refreshpage(); }); }); function refreshpage(){ var text = '<div data-role="collapsibleset"><div data-role="collapsible"><h3>click me - im collapsible 2!</h3><p>im expanded content button.</p></div>'; $("#name").html(text).enhancewithin(); }
working demo
also, in second code snippet, loading 2 different versions of jquery. use either 2.1 or 1.11 not both.
Comments
Post a Comment