#javascript
#javascript
Вопрос:
Я хочу поместить переменную, полученную с помощью встроенного скрипта, в файл: 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) и т. Д. … В зависимости от того, в какой области запускается внешний файл и / или как часто необходимо передавать данные.
Имейте в виду, что встроенный код должен выполняться перед кодом из внешнего файла, т. Е. встроить его перед включением других скриптов.
Комментарии:
1. эй, я перепробовал все ваши методы, и когда я его запустил, он выдал ошибку: ReferenceError: fd не определен в /app/index.js:96:4
2. можете ли вы обновить свой вопрос как с помощью html, так и внешнего js, и как вы подключаетесь к этому внешнему js? некоторые базовые настройки для отладки?