Fix JSInput scope leak

Declare variables locally
- The `allSections` variable was leaking into the global scope, due to a
  typo in the declaration.
- `dataProcessed` can be declared more narrowly within the callback.
This commit is contained in:
stv
2014-06-05 12:41:18 -07:00
parent cf14dee790
commit fd10fbf725

View File

@@ -181,19 +181,15 @@ var JSInput = (function ($, undefined) {
}
function walkDOM() {
var dataProcessed, all;
// Find all jsinput elements
allSections = $('section.jsinput');
var allSections = $('section.jsinput');
// When a JSInput problem loads, its data-processed attribute is false,
// so the jsconstructor will be called for it.
// The constructor will not be called again on subsequent reruns of
// this file by other JSInput. Only if it is reloaded, either with the
// rest of the page or when it is submitted, will this constructor be
// called again.
// called again.
allSections.each(function(index, value) {
dataProcessed = ($(value).attr("data-processed") === "true");
var dataProcessed = ($(value).attr("data-processed") === "true");
if (!dataProcessed) {
jsinputConstructor(value);
$(value).attr("data-processed", 'true');