Во-первых, проблемы с вашим кодом:
У вас есть блок JavaScript сидит внутри <body>
. Это не стандартное, недопустимое и не будет выполнено. В частности, он будет отображаться как текст на странице, а не выполнен как JavaScript. Все JavaScript должны быть расположены в одном из следующих мест: тег inline <script>
, внешний файл, который вы загружаете с тегом <script>
, атрибут события, такой как onload="..."
или атрибут, который может запускать JavaScript, например href="javascript:..."
, на <a>
элементах.
У вас есть синтаксическая ошибка в объекте, который вы возвращаете с Table()
; нет разделителя запятой между парами хеш-ключей/значений (showData()
и takeData()
). Требуется запятая.
У вас есть некоторые неинициализированные переменные, включая val2
, data
и canvas
. Вероятно, вы просто выписали свой код, чтобы опустить соответствующую инициализацию, но вы должны попытаться представить полные самодостаточные образцы кода, задавая вопросы о переполнении стека.
Что касается вашего вопроса, то объект tab
вы возвращаетесь из Table()
выглядит очень много, как объект экземпляра класса на любом языке OO. JavaScript поддерживает парадигму OO через образец прототипа, поэтому разумным подходом было бы сделать Table
полным классом, определив его прототип. Если вы сделаете это, вы можете сделать tab
полным экземпляром Table
, создав его с помощью оператора new
, а затем вы можете сохранить массив myData
в качестве атрибута на tab
.Вот случайная демонстрация основана на примере кода:
http://jsfiddle.net/awytnngu/
HTML:
<div id="tab">
<input id="polja0" value="def1"/>
<input id="polja1" value="def2"/>
<input id="polja2" value="def3"/>
</div>
JS:
function Table(el,data) {
this.el = el;
return this;
}
Table.prototype.showData = function() {
// ...
};
Table.prototype.takeData = function() {
this.myData = new Array();
var val2 = this.el.children.length;
for (var i = 0; i < val2; ++i)
this.myData[i] = document.getElementById('polja'+i).value;
};
Table.prototype.drawPieChart = function(canvas) {
alert(this.myData);
};
var el = document.getElementById('tab');
data = 'whatever';
var tab = new Table(el,data);
tab.showData();
tab.takeData();
canvas = 'whatever';
var PieChart = tab.drawPieChart(canvas);
Это только меня или 'не myData' нигде в коде? – TheDude
Кроме того, неправильный код. Вы не включаете JS-код внутри тега 'script', и у вас тоже нет правильного синтаксиса JS. Это работает для вас? – TheDude
Работает jep.it. У меня около 200 строк кода, поэтому я просто ставил вещи, которые, как я думал, важны. , но, возможно, я просто усложняю – sritno