Я хочу поместить переменную, полученную с помощью встроенного скрипта, в файл: index.ejs. Это код, который у меня есть:
$(function(){
var finalpoints = points;
var finalcosts = costammount;
finaldata = [finalpoints,finalcosts];
});
И код, который у меня есть во внешнем файле:
(function( detail, $, undefined, index) {
'use strict';
var fd= finaldata;
})(fd, jQuery);
И ничего не происходит .. происходит ошибка:
ReferenceError: fd is not defined
at /app/index.js:95:4
at Layer.handle [as handle_request] (/rbd/pnpm-volume/9dc75d7a-5227-48ce-8d3d-268791bd5521/node_modules/.registry.npmjs.org/express/4.17.1/node_modules/express/lib/router/layer.js:95:5)
at next (/rbd/pnpm-volume/9dc75d7a-5227-48ce-8d3d-268791bd5521/node_modules/.registry.npmjs.org/express/4.17.1/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/rbd/pnpm-volume/9dc75d7a-5227-48ce-8d3d-268791bd5521/node_modules/.registry.npmjs.org/express/4.17.1/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/rbd/pnpm-volume/9dc75d7a-5227-48ce-8d3d-268791bd5521/node_modules/.registry.npmjs.org/express/4.17.1/node_modules/express/lib/router/layer.js:95:5)
at /rbd/pnpm-volume/9dc75d7a-5227-48ce-8d3d-268791bd5521/node_modules/.registry.npmjs.org/express/4.17.1/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/rbd/pnpm-volume/9dc75d7a-5227-48ce-8d3d-268791bd5521/node_modules/.registry.npmjs.org/express/4.17.1/node_modules/express/lib/router/index.js:335:12)
at next (/rbd/pnpm-volume/9dc75d7a-5227-48ce-8d3d-268791bd5521/node_modules/.registry.npmjs.org/express/4.17.1/node_modules/express/lib/router/index.js:275:10)
at serveStatic (/rbd/pnpm-volume/9dc75d7a-5227-48ce-8d3d-268791bd5521/node_modules/.registry.npmjs.org/serve-static/1.14.1/node_modules/serve-static/index.js:75:16)
at Layer.handle [as handle_request] (/rbd/pnpm-volume/9dc75d7a-5227-48ce-8d3d-268791bd5521/node_modules/.registry.npmjs.org/express/4.17.1/node_modules/express/lib/router/layer.js:95:5)
1 ответ
Вы можете попробовать использовать глобальную переменную, т.е. объявить ее перед закрытием в глобальной области видимости. Это не «чистое» решение, но его проще всего попробовать и посмотреть, работает ли остальная часть кода.
var globalData = {
finalpoints: 0,
finalcosts: 0
};
$(function(){
globalData.finalpoints = points;
globalData.finalcosts = costammount;
});
А потом:
(function( detail, $, undefined, index) {
'use strict';
var fd= globalData;
})(fd, jQuery);
Вы также можете объявить некоторую глобальную функцию и вызвать ее из внешних файлов вместо прямого доступа к переменным, чтобы получить нужные вам значения. Таким образом, вы можете вернуть объект с данными и при необходимости добавить / удалить дополнительные данные.
function getFinalData() {
return [globalData.finalpoints, globalData.finalcosts];
}
Или просто не переносите встроенные данные и не используйте глобальную переменную:
function getFinalData() {
var finalpoints = points;
var finalcosts = costammount;
return [finalpoints, finalcosts];
}
А потом:
(function( detail, $, undefined, index) {
'use strict';
var fd= getFinalData();
})(fd, jQuery);
После этого вы можете попробовать некоторые решения для передачи сообщений, такие как настраиваемые события (https : //developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events), или какая-нибудь библиотека глобального хранилища данных, или даже https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage (или sessionStorage) и т. д. в зависимости от того, в какой области запущен внешний файл и / или как часто данные должны передаваться.
Имейте в виду, что встроенный код должен запускаться перед кодом из внешнего файла, то есть встроить его перед включением других скриптов.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.