From: Angel H. <ang...@ua...> - 2013-09-19 09:21:56
Attachments:
WPM$8M1V.PM$
|
Dear Bob, I've found a bug in Jmol2.js -- which otherwise is being a very useful tool! http://chemapps.stolaf.edu/jmol/jsmol/Jmol2.js function jmolSetTarget(targetSuffix) { if (targetSuffix)_jmol.targetSuffix = targetSuffix; return _jmol.target = "jmolApplet" + _jmol.targetSuffix; } When a page has several Jmols and the suffix is zero, it fails the test of first line in that function -- zero evaluates to false and the script is sent to the wrong Jmol object (the last one selected before) (I'm trying to isolate if this is also the cause of my problem with SYNC; but it does generate problems in another page not using sync) I've tried this change with success: if (targetSuffix || targetSuffix===0 || targetSuffix==='0') _jmol.targetSuffix = targetSuffix; A bit rude, but I'm not sure if the zero is text or number. Maybe testing for 'undefined' would be cleaner |
From: Robert H. <ha...@st...> - 2013-09-19 11:52:40
|
sure. that should read if (arguments.length < 1)... On Thu, Sep 19, 2013 at 4:21 AM, Angel Herráez <ang...@ua...> wrote: > Dear Bob, > I've found a bug in Jmol2.js -- which otherwise is being a very > useful tool! > http://chemapps.stolaf.edu/jmol/jsmol/Jmol2.js > > function jmolSetTarget(targetSuffix) { > if (targetSuffix)_jmol.targetSuffix = targetSuffix; > return _jmol.target = "jmolApplet" + _jmol.targetSuffix; > } > > When a page has several Jmols and the suffix is zero, it fails the > test of first line in that function -- zero evaluates to false and > the script is sent to the wrong Jmol object (the last one selected > before) > > (I'm trying to isolate if this is also the cause of my problem with > SYNC; but it does generate problems in another page not using sync) > > I've tried this change with success: > if (targetSuffix || targetSuffix===0 || targetSuffix==='0') > _jmol.targetSuffix = targetSuffix; > > A bit rude, but I'm not sure if the zero is text or number. > Maybe testing for 'undefined' would be cleaner > > > > ------------------------------------------------------------------------------ > LIMITED TIME SALE - Full Year of Microsoft Training For Just $49.99! > 1,500+ hours of tutorials including VisualStudio 2012, Windows 8, > SharePoint > 2013, SQL 2012, MVC 4, more. BEST VALUE: New Multi-Library Power Pack > includes > Mobile, Cloud, Java, and UX Design. Lowest price ever! Ends 9/20/13. > http://pubads.g.doubleclick.net/gampad/clk?id=58041151&iu=/4140/ostg.clktrk > _______________________________________________ > Jmol-developers mailing list > Jmo...@li... > https://lists.sourceforge.net/lists/listinfo/jmol-developers > > -- Robert M. Hanson Larson-Anderson Professor of Chemistry St. Olaf College Northfield, MN http://www.stolaf.edu/people/hansonr If nature does not answer first what we want, it is better to take what answer we get. -- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900 |
From: Robert H. <ha...@st...> - 2013-09-19 12:04:51
|
...no, that's not quite right.It may be coming in as "undefined". You want: if (targetSuffix == null)... This has confused me for a long time. Doesn't help to have misinformation such as http://saladwithsteve.com/2008/02/javascript-undefined-vs-null.html out there. TOTALLY incorrect advice -- exactly the opposite, in fact. ALWAYS use if (x != null) rather than if (!x) if you want to include 0 as passing for true. On Thu, Sep 19, 2013 at 6:52 AM, Robert Hanson <ha...@st...> wrote: > sure. that should read > > if (arguments.length < 1)... > > > On Thu, Sep 19, 2013 at 4:21 AM, Angel Herráez <ang...@ua...>wrote: > >> Dear Bob, >> I've found a bug in Jmol2.js -- which otherwise is being a very >> useful tool! >> http://chemapps.stolaf.edu/jmol/jsmol/Jmol2.js >> >> function jmolSetTarget(targetSuffix) { >> if (targetSuffix)_jmol.targetSuffix = targetSuffix; >> return _jmol.target = "jmolApplet" + _jmol.targetSuffix; >> } >> >> When a page has several Jmols and the suffix is zero, it fails the >> test of first line in that function -- zero evaluates to false and >> the script is sent to the wrong Jmol object (the last one selected >> before) >> >> (I'm trying to isolate if this is also the cause of my problem with >> SYNC; but it does generate problems in another page not using sync) >> >> I've tried this change with success: >> if (targetSuffix || targetSuffix===0 || targetSuffix==='0') >> _jmol.targetSuffix = targetSuffix; >> >> A bit rude, but I'm not sure if the zero is text or number. >> Maybe testing for 'undefined' would be cleaner >> >> >> >> ------------------------------------------------------------------------------ >> LIMITED TIME SALE - Full Year of Microsoft Training For Just $49.99! >> 1,500+ hours of tutorials including VisualStudio 2012, Windows 8, >> SharePoint >> 2013, SQL 2012, MVC 4, more. BEST VALUE: New Multi-Library Power Pack >> includes >> Mobile, Cloud, Java, and UX Design. Lowest price ever! Ends 9/20/13. >> >> http://pubads.g.doubleclick.net/gampad/clk?id=58041151&iu=/4140/ostg.clktrk >> _______________________________________________ >> Jmol-developers mailing list >> Jmo...@li... >> https://lists.sourceforge.net/lists/listinfo/jmol-developers >> >> > > > -- > Robert M. Hanson > Larson-Anderson Professor of Chemistry > St. Olaf College > Northfield, MN > http://www.stolaf.edu/people/hansonr > > > If nature does not answer first what we want, > it is better to take what answer we get. > > -- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900 > > -- Robert M. Hanson Larson-Anderson Professor of Chemistry St. Olaf College Northfield, MN http://www.stolaf.edu/people/hansonr If nature does not answer first what we want, it is better to take what answer we get. -- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900 |
From: Robert H. <ha...@st...> - 2013-09-19 12:09:35
|
setting it to this: function jmolSetTarget(targetSuffix) { targetSuffix != null && (_jmol.targetSuffix = targetSuffix); return _jmol.target = "jmolApplet" + _jmol.targetSuffix; } On Thu, Sep 19, 2013 at 7:04 AM, Robert Hanson <ha...@st...> wrote: > ...no, that's not quite right.It may be coming in as "undefined". You want: > > if (targetSuffix == null)... > > This has confused me for a long time. Doesn't help to have misinformation > such as > > http://saladwithsteve.com/2008/02/javascript-undefined-vs-null.html > > out there. TOTALLY incorrect advice -- exactly the opposite, in fact. > ALWAYS use > > if (x != null) > > rather than > > if (!x) > > if you want to include 0 as passing for true. > > > > > > On Thu, Sep 19, 2013 at 6:52 AM, Robert Hanson <ha...@st...> wrote: > >> sure. that should read >> >> if (arguments.length < 1)... >> >> >> On Thu, Sep 19, 2013 at 4:21 AM, Angel Herráez <ang...@ua...>wrote: >> >>> Dear Bob, >>> I've found a bug in Jmol2.js -- which otherwise is being a very >>> useful tool! >>> http://chemapps.stolaf.edu/jmol/jsmol/Jmol2.js >>> >>> function jmolSetTarget(targetSuffix) { >>> if (targetSuffix)_jmol.targetSuffix = targetSuffix; >>> return _jmol.target = "jmolApplet" + _jmol.targetSuffix; >>> } >>> >>> When a page has several Jmols and the suffix is zero, it fails the >>> test of first line in that function -- zero evaluates to false and >>> the script is sent to the wrong Jmol object (the last one selected >>> before) >>> >>> (I'm trying to isolate if this is also the cause of my problem with >>> SYNC; but it does generate problems in another page not using sync) >>> >>> I've tried this change with success: >>> if (targetSuffix || targetSuffix===0 || targetSuffix==='0') >>> _jmol.targetSuffix = targetSuffix; >>> >>> A bit rude, but I'm not sure if the zero is text or number. >>> Maybe testing for 'undefined' would be cleaner >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> LIMITED TIME SALE - Full Year of Microsoft Training For Just $49.99! >>> 1,500+ hours of tutorials including VisualStudio 2012, Windows 8, >>> SharePoint >>> 2013, SQL 2012, MVC 4, more. BEST VALUE: New Multi-Library Power Pack >>> includes >>> Mobile, Cloud, Java, and UX Design. Lowest price ever! Ends 9/20/13. >>> >>> http://pubads.g.doubleclick.net/gampad/clk?id=58041151&iu=/4140/ostg.clktrk >>> _______________________________________________ >>> Jmol-developers mailing list >>> Jmo...@li... >>> https://lists.sourceforge.net/lists/listinfo/jmol-developers >>> >>> >> >> >> -- >> Robert M. Hanson >> Larson-Anderson Professor of Chemistry >> St. Olaf College >> Northfield, MN >> http://www.stolaf.edu/people/hansonr >> >> >> If nature does not answer first what we want, >> it is better to take what answer we get. >> >> -- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900 >> >> > > > -- > Robert M. Hanson > Larson-Anderson Professor of Chemistry > St. Olaf College > Northfield, MN > http://www.stolaf.edu/people/hansonr > > > If nature does not answer first what we want, > it is better to take what answer we get. > > -- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900 > > -- Robert M. Hanson Larson-Anderson Professor of Chemistry St. Olaf College Northfield, MN http://www.stolaf.edu/people/hansonr If nature does not answer first what we want, it is better to take what answer we get. -- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900 |
From: Robert H. <ha...@st...> - 2013-09-19 12:32:38
|
full fix is at http://sourceforge.net/p/jsmol/code/269/tree//trunk/jsmoljs/Jmol2.js diff is: http://sourceforge.net/p/jsmol/code/269/tree//trunk/jsmoljs/Jmol2.js?diff=190 I took the opportunity to get rid of references to "undefined" --- let me know if you think I'm in error there. On Thu, Sep 19, 2013 at 7:09 AM, Robert Hanson <ha...@st...> wrote: > setting it to this: > > function jmolSetTarget(targetSuffix) { > targetSuffix != null && (_jmol.targetSuffix = targetSuffix); > > return _jmol.target = "jmolApplet" + _jmol.targetSuffix; > } > > > > On Thu, Sep 19, 2013 at 7:04 AM, Robert Hanson <ha...@st...> wrote: > >> ...no, that's not quite right.It may be coming in as "undefined". You >> want: >> >> if (targetSuffix == null)... >> >> This has confused me for a long time. Doesn't help to have misinformation >> such as >> >> http://saladwithsteve.com/2008/02/javascript-undefined-vs-null.html >> >> out there. TOTALLY incorrect advice -- exactly the opposite, in fact. >> ALWAYS use >> >> if (x != null) >> >> rather than >> >> if (!x) >> >> if you want to include 0 as passing for true. >> >> >> >> >> >> On Thu, Sep 19, 2013 at 6:52 AM, Robert Hanson <ha...@st...>wrote: >> >>> sure. that should read >>> >>> if (arguments.length < 1)... >>> >>> >>> On Thu, Sep 19, 2013 at 4:21 AM, Angel Herráez <ang...@ua...>wrote: >>> >>>> Dear Bob, >>>> I've found a bug in Jmol2.js -- which otherwise is being a very >>>> useful tool! >>>> http://chemapps.stolaf.edu/jmol/jsmol/Jmol2.js >>>> >>>> function jmolSetTarget(targetSuffix) { >>>> if (targetSuffix)_jmol.targetSuffix = targetSuffix; >>>> return _jmol.target = "jmolApplet" + _jmol.targetSuffix; >>>> } >>>> >>>> When a page has several Jmols and the suffix is zero, it fails the >>>> test of first line in that function -- zero evaluates to false and >>>> the script is sent to the wrong Jmol object (the last one selected >>>> before) >>>> >>>> (I'm trying to isolate if this is also the cause of my problem with >>>> SYNC; but it does generate problems in another page not using sync) >>>> >>>> I've tried this change with success: >>>> if (targetSuffix || targetSuffix===0 || targetSuffix==='0') >>>> _jmol.targetSuffix = targetSuffix; >>>> >>>> A bit rude, but I'm not sure if the zero is text or number. >>>> Maybe testing for 'undefined' would be cleaner >>>> >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> LIMITED TIME SALE - Full Year of Microsoft Training For Just $49.99! >>>> 1,500+ hours of tutorials including VisualStudio 2012, Windows 8, >>>> SharePoint >>>> 2013, SQL 2012, MVC 4, more. BEST VALUE: New Multi-Library Power Pack >>>> includes >>>> Mobile, Cloud, Java, and UX Design. Lowest price ever! Ends 9/20/13. >>>> >>>> http://pubads.g.doubleclick.net/gampad/clk?id=58041151&iu=/4140/ostg.clktrk >>>> _______________________________________________ >>>> Jmol-developers mailing list >>>> Jmo...@li... >>>> https://lists.sourceforge.net/lists/listinfo/jmol-developers >>>> >>>> >>> >>> >>> -- >>> Robert M. Hanson >>> Larson-Anderson Professor of Chemistry >>> St. Olaf College >>> Northfield, MN >>> http://www.stolaf.edu/people/hansonr >>> >>> >>> If nature does not answer first what we want, >>> it is better to take what answer we get. >>> >>> -- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900 >>> >>> >> >> >> -- >> Robert M. Hanson >> Larson-Anderson Professor of Chemistry >> St. Olaf College >> Northfield, MN >> http://www.stolaf.edu/people/hansonr >> >> >> If nature does not answer first what we want, >> it is better to take what answer we get. >> >> -- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900 >> >> > > > -- > Robert M. Hanson > Larson-Anderson Professor of Chemistry > St. Olaf College > Northfield, MN > http://www.stolaf.edu/people/hansonr > > > If nature does not answer first what we want, > it is better to take what answer we get. > > -- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900 > > -- Robert M. Hanson Larson-Anderson Professor of Chemistry St. Olaf College Northfield, MN http://www.stolaf.edu/people/hansonr If nature does not answer first what we want, it is better to take what answer we get. -- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900 |
From: Angel H. <ang...@ua...> - 2013-09-19 13:06:27
|
> I took the opportunity to get rid of references to "undefined" --- > let me know if you think I'm in error there. Sorry, I cannot say. I have no authority on these things. And the && syntax confuses me. All I have previously read about these things is to use "typeof" and to use strict equality, that is === or !== I would guess that the value may indeed be undefined if the variable has not been declared and (maybe) null or undefined? if it was initialized without a value. All these variables are indeed defined in Jmol2.js, are they not? Then.... I got lost :( |
From: Robert H. <ha...@st...> - 2013-09-19 14:35:57
|
Isn't it tricky? My understanding: null == undefined null != 0 null != "" 0 == "" 0 == false "" == false so "if (x)..." will be false for x = 0, "", null, or undefined and "if (x==null)" will only be true for null or undefined, not 0 or "" On Thu, Sep 19, 2013 at 8:05 AM, Angel Herráez <ang...@ua...> wrote: > > I took the opportunity to get rid of references to "undefined" --- > > let me know if you think I'm in error there. > > Sorry, I cannot say. I have no authority on these things. And the && > syntax confuses me. > > All I have previously read about these things is to use "typeof" and > to use strict equality, that is === or !== > > I would guess that the value may indeed be undefined if the variable > has not been declared and (maybe) null or undefined? if it was > initialized without a value. > All these variables are indeed defined in Jmol2.js, are they not? > Then.... I got lost :( > > > > > > > ------------------------------------------------------------------------------ > LIMITED TIME SALE - Full Year of Microsoft Training For Just $49.99! > 1,500+ hours of tutorials including VisualStudio 2012, Windows 8, > SharePoint > 2013, SQL 2012, MVC 4, more. BEST VALUE: New Multi-Library Power Pack > includes > Mobile, Cloud, Java, and UX Design. Lowest price ever! Ends 9/20/13. > http://pubads.g.doubleclick.net/gampad/clk?id=58041151&iu=/4140/ostg.clktrk > _______________________________________________ > Jmol-developers mailing list > Jmo...@li... > https://lists.sourceforge.net/lists/listinfo/jmol-developers > -- Robert M. Hanson Larson-Anderson Professor of Chemistry St. Olaf College Northfield, MN http://www.stolaf.edu/people/hansonr If nature does not answer first what we want, it is better to take what answer we get. -- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900 |