<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://lipidbank.jp/mediawiki/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACalculateMass.js</id>
	<title>MediaWiki:CalculateMass.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://lipidbank.jp/mediawiki/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACalculateMass.js"/>
	<link rel="alternate" type="text/html" href="https://lipidbank.jp/mediawiki/index.php?title=MediaWiki:CalculateMass.js&amp;action=history"/>
	<updated>2026-05-30T23:10:40Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://lipidbank.jp/mediawiki/index.php?title=MediaWiki:CalculateMass.js&amp;diff=113143&amp;oldid=prev</id>
		<title>Jcblmaster: Created page with &quot;addOnloadHook(calculateMassInit);   var EXT_MASS = { 	&quot;C&quot;:  12.0, 	&quot;H&quot;:   1.007825035, 	&quot;O&quot;:  15.99491463, 	&quot;N&quot;:  14.003074002, 	&quot;S&quot;:  31.97207070, 	&quot;P&quot;:  30.9737620, 	&quot;Na&quot;: 2...&quot;</title>
		<link rel="alternate" type="text/html" href="https://lipidbank.jp/mediawiki/index.php?title=MediaWiki:CalculateMass.js&amp;diff=113143&amp;oldid=prev"/>
		<updated>2017-03-27T00:55:52Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;addOnloadHook(calculateMassInit);   var EXT_MASS = { 	&amp;quot;C&amp;quot;:  12.0, 	&amp;quot;H&amp;quot;:   1.007825035, 	&amp;quot;O&amp;quot;:  15.99491463, 	&amp;quot;N&amp;quot;:  14.003074002, 	&amp;quot;S&amp;quot;:  31.97207070, 	&amp;quot;P&amp;quot;:  30.9737620, 	&amp;quot;Na&amp;quot;: 2...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;addOnloadHook(calculateMassInit); &lt;br /&gt;
&lt;br /&gt;
var EXT_MASS = {&lt;br /&gt;
	&amp;quot;C&amp;quot;:  12.0,&lt;br /&gt;
	&amp;quot;H&amp;quot;:   1.007825035,&lt;br /&gt;
	&amp;quot;O&amp;quot;:  15.99491463,&lt;br /&gt;
	&amp;quot;N&amp;quot;:  14.003074002,&lt;br /&gt;
	&amp;quot;S&amp;quot;:  31.97207070,&lt;br /&gt;
	&amp;quot;P&amp;quot;:  30.9737620,&lt;br /&gt;
	&amp;quot;Na&amp;quot;: 22.9897677,&lt;br /&gt;
	&amp;quot;K&amp;quot;:  38.9637074,&lt;br /&gt;
	&amp;quot;Ca&amp;quot;: 39.9625906&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var AVE_MASS = {&lt;br /&gt;
	&amp;quot;C&amp;quot;:  12.0107,&lt;br /&gt;
	&amp;quot;H&amp;quot;:   1.00794,&lt;br /&gt;
	&amp;quot;O&amp;quot;:  15.9994,&lt;br /&gt;
	&amp;quot;N&amp;quot;:  14.00674,&lt;br /&gt;
	&amp;quot;S&amp;quot;:  32.066,&lt;br /&gt;
	&amp;quot;P&amp;quot;:  30.973761,&lt;br /&gt;
	&amp;quot;Na&amp;quot;: 22.98977,&lt;br /&gt;
	&amp;quot;K&amp;quot;:  39.0983,&lt;br /&gt;
	&amp;quot;Ca&amp;quot;: 40.078,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function calculateMassInit()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;{{{1}}}&amp;quot;).onclick = function(){&lt;br /&gt;
		var mass = calculateMassFromFormula(document.getElementById(&amp;quot;{{{2}}}&amp;quot;).value, false);&lt;br /&gt;
		document.getElementById(&amp;quot;{{{3}}}&amp;quot;).value = mass;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function calculateMassFromFormula(formula, isAve)&lt;br /&gt;
{&lt;br /&gt;
	var items = splitFormula(formula);&lt;br /&gt;
&lt;br /&gt;
	var total = 0;&lt;br /&gt;
	var masses;&lt;br /&gt;
	if(isAve)&lt;br /&gt;
		masses = AVE_MASS;&lt;br /&gt;
	else&lt;br /&gt;
		masses = EXT_MASS;&lt;br /&gt;
	for(var i = 0; i &amp;lt; items.length; i += 2){&lt;br /&gt;
		if(isFinite(masses[items[i]]))&lt;br /&gt;
			total += masses[items[i]] * items[i+1];&lt;br /&gt;
			//console.log(masses[items[i]], items[i+1]);&lt;br /&gt;
	}&lt;br /&gt;
	//console.log(items)&lt;br /&gt;
	//console.log(total)&lt;br /&gt;
	return total;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function splitFormula(formula)&lt;br /&gt;
{&lt;br /&gt;
	if(formula.length == 0) // 組成式が無い&lt;br /&gt;
		return [];&lt;br /&gt;
&lt;br /&gt;
	var items = [];&lt;br /&gt;
	formula += &amp;quot;$&amp;quot;; // 番兵&lt;br /&gt;
	var ch = formula.substr(0, 1);&lt;br /&gt;
	if(ch.match(/^[^A-Z]$/)) // フォーマットがおかしい&lt;br /&gt;
		return [];&lt;br /&gt;
&lt;br /&gt;
	var num = 1;&lt;br /&gt;
	for(var i = 1; i &amp;lt; formula.length; i ++){&lt;br /&gt;
		var next = formula.substr(i, 1);&lt;br /&gt;
		if(next.match(/^[0-9]$/)){&lt;br /&gt;
			// 数字が終わるまでを検索する&lt;br /&gt;
			for(var j = i+1; j &amp;lt; formula.length; j ++){&lt;br /&gt;
				if(formula.substr(j,1).match(/^[^0-9]$/)){&lt;br /&gt;
					// 終了&lt;br /&gt;
					num = parseInt(formula.substr(i,j-i), 10);&lt;br /&gt;
					i = j-1;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
		} else if(next.match(/^[a-z]$/)){&lt;br /&gt;
			ch += next;&lt;br /&gt;
&lt;br /&gt;
		} else if(next.match(/^[A-Z]$/)){&lt;br /&gt;
			items.push(ch);&lt;br /&gt;
			items.push(num);&lt;br /&gt;
			ch  = next;&lt;br /&gt;
			num = 1;&lt;br /&gt;
&lt;br /&gt;
		} else if(next == &amp;quot;$&amp;quot;){&lt;br /&gt;
			items.push(ch);&lt;br /&gt;
			items.push(num);&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		} else { // unknown&lt;br /&gt;
			return [];&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return items;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jcblmaster</name></author>
	</entry>
</feed>