Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Где на вопросы по JavaScript отвечают?

Посоветуйте форум где на вопросы  по JavaScript отвечают
Ответ:
Посоветуйте форум где на вопросы  по JavaScript отвечают
Вопрос: Получить значение input в javascript

Здравствуйте все!
Пишу сайт на РНР, в одном месте нужно сделать что-то типа маленького калькулятора. Т.к. РНР исполняется на стороне сервера, а Javascript на стороне клиента, то будем пользоваться последним... А я в нем ни бум-бум! Курил несколько дней мануалы - все безрезультатно.

В общем задача такая:
Есть поле <input name="input" id="input" type="text" value="">, есть РНР переменная $ppp.
Пользователь вводит цифры в input, скрипт введенное число умножает на переменную $ppp и выводит результат в нужном месте в блоке <div>. И все это на автомате без нажатия каких-либо кнопок.

Вторым этапом ЯваСкрипт должен выдать РНР скрипту
1. Значение, которое ввел Пользователь в input
2. Значение, которое высчитал ЯваСкрипт (хотя, его может быть и не обязательно, если у меня на руках Инфа из input и исходная переменная $ppp. РНРшкой посчитаю)

Как загнать переменную РНР в Скрипт я нашел. Ничего сложного:
Код Code
1
2
3
4
<? $var = "Hello, world"; ?>
<script>
var a = "<? echo $var ?>";
</script>
не проверял, но думаю работать должно.

Нашел в сети вот такую штуку:
Код Code
1
2
3
4
5
6
7
8
<input type="text"> oninput: <span id="result"></span>
<script>
  var input = document.body.children[0];
 
  input.oninput = function() {
    document.getElementById('result').innerHTML = input.value;
  };
</script>
Проверял. Работает.

Но я никак не могу понять как! из поля input в код взять значение переменных?
Что мы присваиваем переменной input вот этим: document.body.children[0]?
Как это вообще работает???
Повторюсь, курю мануалы уже несколько дней. Ничегошеньки не понимаю, а сделать надо.

Подскажите с какого конца подобраться, в какую сторону смотреть? Может есть хорошие инструкции, которые мне не попались?
Ответ:
Цитата Сообщение от Shakalaka Посмотреть сообщение
Но вообще, лучше select-у присвоить id и вместо document.getElementsByTagName('SELECT')[0] писать document.getElementById('select id');
Ну и понятное дело, вместо чисел 2, 3 вставить значения из php
Благодарю за помощь! Все заработало.
Так как я не являюсь заядлым форумчанином и к форумам обращаюсь только за помощью, то получив ее хочу выразить благодарность всем, кто отвечал на мои вопросы и выкладываю рабочую программу, которая у меня в итоге получилась для тех, кто попадет на эту тему форума с похожим вопросом:
Код HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
            <form method="post" class="buyForm">
                <div class="buy-userpage-top">
                    <select name="wm_select" id="wm_select">
                        <option value="wmz">WMZ
                        <option value ="wmk">WMK
                    </select>
                </div>
                <div class="buy-userpage-tl">
                    <h4>Количество WebMoney</h4>
                    <div class="input">
                        <input name="wm_input" id="wm_input" type="text" value="">
                    </div>
                </div>
                <div class="buy-userpage-tr">
                    <h4>Сумма в тенге</h4>
                    <div class="input">
                        <div class="input_field" id="wm_output"></div>
                    </div>
                </div>
Код Javascript
1
2
3
4
5
6
7
8
9
10
11
<script>                    
document.getElementById ('wm_input').oninput = function (){
    if (document.getElementById('wm_select').value == 'wmz') {
      jwm_buy = <?php echo $wmz_buy; ?>;
    } 
    else {
      jwm_buy = <?php echo $wmk_buy; ?>;
    }
document.getElementById ('wm_output').innerHTML = this.value*jwm_buy
}
</script>   
Значения переменных РНР я вывожу из базы, не вижу смысла их тут выкладывать.
Форма не окончена, поэтому закрывающего тэга у формы нет.
Вопрос: Задачи по JavaScript

Помогите решить задачи по JavaScript
Задача1. Преобразование символьных величин
Составить программу, которая разбивает данное слово на слоги.
Задача 2. Задачи с матрицами
Даны целые числа a[1], ..., a[10], целочисленная квадратная матрица порядка n. Составить программу, которая заменит нулями в матрице элементы с четной суммой индексов, для которых имеются равные среди а[1], ... ,а[10].
Задача 3. Использование функций
Натуральное число называется палиндромом, если оно читается одинаково с обеих сторон (например, 171). Возьмем произвольное натуральное число X. Если оно не палиндром, то перевернем его и сложим с исходным числом. Если сумма не является палиндромом, то проделаем с ней указанные операции. Работу продолжать до тех пор, пока не получится палиндром. Составить программу, которая на экран выведет полученное число и количество шагов. Для получения перевернутого числа составить процедуру.
Ответ: BANO, это к админу.
Такие темы зачастую чистый спам, хотя вопросы могут быть нормальные.
Вбросив такую тему этот, хм, чудак веселится глядя как люди отвечают, и ему не понять, что люди пишут для себя, а не для него, и что этот нормальный вопрос может кому то позже пригодиться.
Сложно тут всё, но я бы такие темы уничтожал на корню.
Вопрос: Вызов javascript из php

Всем привет. Нужна помощь, так как самому разобраться не удается
Есть такие функции php, отвечающие за вывод информационных сообщений
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function MessageSend($p1, $p2, $p3 = '', $p4 = 1) {
    if ($p1 == 1) $p1 = 'Ошибка';
    else if ($p1 == 2) $p1 = 'Подсказка';
    else if ($p1 == 3) $p1 = 'Информация';
    $_SESSION['message'] = '
    <div>
    <p><strong>'.$p1.'. </strong>'.$p2.'</p>
    </div>
    ';
    if ($p4) {
        Location($p3);
    }
}
    
function MessageShow() {
    if ($_SESSION['message'])$Message = $_SESSION['message'];
    echo $Message;
    $_SESSION['message'] = array();
}
И есть java выводящий всплывающее уведомлении при загрузке страницы.
Javascript
1
2
3
4
5
6
7
8
9
(function Notification() {
    var notification = new NotificationFx({
        message : "<p>Hello there!</p>",
        layout : "growl",
        effect : "jelly",
        type : "warning", // notice, warning, error or success
    });
    notification.show();        
})();
Как можно вызвать javascript из функции php?
Ответ: Решил все гораздо проще.
Записал информационное сообщение в сессию и передал переменную в javascript
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if($_SESSION['message'] != array()){
    $Message = $_SESSION['message'];
    $Script = '
    (function Notification() {
        var notification = new NotificationFx({
            message : "<p>'.$Message.'</p>",
            layout : "growl",
            effect : "jelly",
            type : "warning", // notice, warning, error or success
        });
        notification.show();        
    })();
    ';
    echo '<script>'.$Script.'</script>';
}
$_SESSION['message'] = array();
Вопрос: как с javascript создать копию документа и заменить в нем шапку?

как с помощью javascript создать копию документа и заменить в нем шапку?
Ответ: AnnaChapman,
Сообщение от AnnaChapman
все вы такие жадные на знания
Что значит "жадные на знания"? Знаний полно в интернете. learn.javascript.ru - прекрасные знания.
На форуме же решают определенные проблемы. Здесь нет дядь, которые будут круглосуточно решать чьи-то задачи.
Как правило, люди, которые отвечают в тредах - это занятые программисты, которые в свободное от работы время помогают людям, которые сталкиваются с трудностями при написании js-кода.
Мы помогаем, но не учим. Если же вам нужно решить какую-то задачу, но вы совсем не хотите лезть в дебри js-кода, то нанимайте дядю за деньги.
Вопрос: Защита javascript от модификации извне

Здравствуйте товарищи разработчики! По долгу службы начальник распорядился заняться доскональным изучением javascript, хотя до этого я работал чисто на написании модулей на php. Когда уже знаешь один язык на второй идти куда проще с вилами. В итоге моего изучения мне было поручено написать расширение для Chrome.
Суть расширения в следующем:
К странице подключается js скрипт, который в переменную собирает тело документа (между тегами <body></body>).
var test = document.body.innerHTML;

Далее AJAX-ом делаем отправку содержимого переменной test на сервер. Посланные на сервер данные обрабатываются и в зависимости от содержания некоторых элементов страницы выдаём AJAX-ом response в расширение пользователю и оповещаем его по конкретной ситуации.
Особенности:
1) Сайт с которого будем тянуть "тело" не наш, поэтому и такие костыли с выдиранием контента страницы. Т.е. мы посредники. Пользователь ставящий расширение даёт нам разрешение на граббинг тела страницы.
2) Мог возникнуть логичный вопрос: почему бы не потянуть curl-ом сервером? Но тут логичный ответ - кука защищённая для хоста, т.е. через document.cookie мы не вытянем её. Да и не хорошо воровать куки, всё же личный кабинет.
Итого по пунктам 1, 2 всё сводится к граббингу тела документа с разрешения пользователя (= установка расширения).
Теперь вопрос, который стоял в названии темы. Я долго вчитывал разные мануалы по js, в т.ч. и ваш на сайте learn.javascript.ru, но не нашёл ответа как защитить мой скрипт от модификации пользователем. Если к примеру он хочет подать левые данные серверу вместо истинных. Ведь, учитывая, что скрипт отрабатывает на стороне пользователя есть возможность вклинить вместо
var test = document.body.innerHTML;

какой-нибудь
var test = "<div>fake</div>"

И уйдёт вместо боди AJAX-ом на сервер этот фейк, а я даже не узнаю был ли модифицирован исходный скрипт, чтобы отвергнуть эти данные и выдать пользователю ошибку через расширение. Вот и итоговый вопрос: есть ли механизм защиты javascript от модификации извне? Или не защиты, а хотя бы оповещения о том, что совершена модификация исходного скрипта? Буду благодарен за дельные ответы. Надеюсь это не такая нерешаемая задача как "защита javascript от копирования".
Никогда не любил обработку на стороне пользователя, но по другому никак(((
Ответ:
Сообщение от Aetae
Ничто не мешает "злому хакеру" вскрыть ваше расширение или сам браузер и слать запросы на сервер вручную. Защита от пользователя на стороне пользователя принципиально невозможна, единственный "вариант" - это когда затраты на реверс-инжиниринг больше возможной прибыли.
Да суть расширений для браузеров в том и есть, что js код получить очень просто - можно дебаггером (по F8) остановить и по одной операции отследить что грузится и куда отправляется. Я, понимая, что это бессмысленно уже бы ставил вопрос о не защите, а хотя бы определения модификации скрипта. Увы, это тоже не решаемая задача, не было придумано в js защищённого от изменения метода для определения сути данного вопроса. Думаю это была бы полезная функция для многих. В основе такой метод нужен для AJAX. Какой скрипт выполнится - оригинальный или что там перепишет хацкер-шалун для себя - не важно. Ключевое, что за пургу попытается AJAX-ом отправить на сервер. Вот тут и помог бы метод определяющий что за скрипт посылает запрос на сервер - оригинальный до единой строчки или рукописный.

Сообщение от KosBeg
это не вариант - опять же, ничего не мешает удалить строку Object.freeze(test);
Я уже потестил, разобрался. Это защита объекта в рамках создания неизменяемых или узко изменяемых объектов, т.е. примитивная защита для себя в рамках одного скрипта (создание объектов констант?).
Вопрос: arbor.js Javascript вывод html ссылки, как сделать?

есть js code
Код HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
<html><!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="utf-8">
<body <?php body_class(); ?>>
 
    <head>
        <script language="javascript" type="text/javascript"  src="js/jquery.min.js"></script>
        <script language="javascript" type="text/javascript" src="js/arbor.js" ></script>
        <script language="javascript" type="text/javascript" src="js/graphics.js" ></script>
        <script language="javascript" type="text/javascript" src="js/renderer.js" ></script>
    </head>
    <body>
Код Javascript
1
2
3
4
5
6
7
8
9
10
11
<script>
    <canvas id="viewport" width="800" height="600" border="1px"></canvas>
      <script language="javascript" type="text/javascript">
            var sys = arbor.ParticleSystem(1000, 400,1);
            sys.parameters({gravity:true});
            sys.renderer = Renderer("#viewport") ;
            var data = {
               nodes:{
                 animals:{'color':'#0F751C','shape':'dot','label':'<a href="http://google.com">Google</a>'},
...................
</script>
Вот вопрос, при вставке ссылки в label google.com, ссылка выводится в форматированном виде, т.е. выводится не ссылка, а весь html-код ссылки
<a href="http://google.com">Google</a>
Куда рыть?

Добавлено через 21 минуту
Вот код js-рисующий круги, в которых уже содержится label текст. renderer.js
Код Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
(function(){
  
  Renderer = function(canvas){
    var canvas = $(canvas).get(0)
    var ctx = canvas.getContext("2d");
    var gfx = arbor.Graphics(canvas)
    var particleSystem = null
 
    var that = {
      init:function(system){
        particleSystem = system
        particleSystem.screenSize(canvas.width, canvas.height) 
        particleSystem.screenPadding(40)
 
        that.initMouseHandling()
      },
 
      redraw:function(){
        if (!particleSystem) return
 
        gfx.clear() // convenience Ж’: clears the whole canvas rect
 
        // draw the nodes & save their bounds for edge drawing
        var nodeBoxes = {}
        particleSystem.eachNode(function(node, pt){
          // node: {mass:#, p:{x,y}, name:"", data:{}}
          // pt:   {x:#, y:#}  node position in screen coords
 
          // determine the box size and round off the coords if we'll be 
          // drawing a text label (awful alignment jitter otherwise...)
          var label = node.data.label||""
          var w = ctx.measureText(""+label).width + 10
          if (!(""+label).match(/^[ \t]*$/)){
            pt.x = Math.floor(pt.x)
            pt.y = Math.floor(pt.y)
          }else{
            label = null
          }
 
          // draw a rectangle centered at pt
          if (node.data.color) ctx.fillStyle = node.data.color
          else ctx.fillStyle = "rgba(0,0,0,.2)"
          if (node.data.color=='none') ctx.fillStyle = "white"
 
          if (node.data.shape=='dot'){
            gfx.oval(pt.x-w/2, pt.y-w/2, w,w, {fill:ctx.fillStyle})
            nodeBoxes[node.name] = [pt.x-w/2, pt.y-w/2, w,w]
          }else{
            gfx.rect(pt.x-w/2, pt.y-10, w,20, 4, {fill:ctx.fillStyle})
            nodeBoxes[node.name] = [pt.x-w/2, pt.y-11, w, 22]
          }
 
          // draw the text
          if (label){
            ctx.font = "12px Helvetica"
            ctx.textAlign = "center"
            ctx.fillStyle = "white"
            if (node.data.color=='none') ctx.fillStyle = '#333333'
            ctx.fillText(label||"", pt.x, pt.y+4)
            ctx.fillText(label||"", pt.x, pt.y+4)
          }
        })              
 
 
        // draw the edges
        particleSystem.eachEdge(function(edge, pt1, pt2){
          // edge: {source:Node, target:Node, length:#, data:{}}
          // pt1:  {x:#, y:#}  source position in screen coords
          // pt2:  {x:#, y:#}  target position in screen coords
 
          var weight = edge.data.weight
          var color = edge.data.color
 
          if (!color || (""+color).match(/^[ \t]*$/)) color = null
 
          // find the start point
          var tail = intersect_line_box(pt1, pt2, nodeBoxes[edge.source.name])
          var head = intersect_line_box(tail, pt2, nodeBoxes[edge.target.name])
 
          ctx.save() 
            ctx.beginPath()
            ctx.lineWidth = (!isNaN(weight)) ? parseFloat(weight) : 1
            ctx.strokeStyle = (color) ? color : "#cccccc"
            ctx.fillStyle = null
 
            ctx.moveTo(tail.x, tail.y)
            ctx.lineTo(head.x, head.y)
            ctx.stroke()
          ctx.restore()
 
          // draw an arrowhead if this is a -> style edge
          if (edge.data.directed){
            ctx.save()
              // move to the head position of the edge we just drew
              var wt = !isNaN(weight) ? parseFloat(weight) : 1
              var arrowLength = 6 + wt
              var arrowWidth = 2 + wt
              ctx.fillStyle = (color) ? color : "#cccccc"
              ctx.translate(head.x, head.y);
              ctx.rotate(Math.atan2(head.y - tail.y, head.x - tail.x));
 
              // delete some of the edge that's already there (so the point isn't hidden)
              ctx.clearRect(-arrowLength/2,-wt/2, arrowLength/2,wt)
 
              // draw the chevron
              ctx.beginPath();
              ctx.moveTo(-arrowLength, arrowWidth);
              ctx.lineTo(0, 0);
              ctx.lineTo(-arrowLength, -arrowWidth);
              ctx.lineTo(-arrowLength * 0.8, -0);
              ctx.closePath();
              ctx.fill();
            ctx.restore()
          }
        })
 
 
 
      },
      initMouseHandling:function(){
        // no-nonsense drag and drop (thanks springy.js)
        selected = null;
        nearest = null;
        var dragged = null;
        var oldmass = 1
 
        // set up a handler object that will initially listen for mousedowns then
        // for moves and mouseups while dragging
        var handler = {
          clicked:function(e){
            var pos = $(canvas).offset();
            _mouseP = arbor.Point(e.pageX-pos.left, e.pageY-pos.top)
            selected = nearest = dragged = particleSystem.nearest(_mouseP);
 
            if (dragged.node !== null) dragged.node.fixed = true
 
            $(canvas).bind('mousemove', handler.dragged)
            $(window).bind('mouseup', handler.dropped)
 
            return false
          },
          dragged:function(e){
            var old_nearest = nearest && nearest.node._id
            var pos = $(canvas).offset();
            var s = arbor.Point(e.pageX-pos.left, e.pageY-pos.top)
 
            if (!nearest) return
            if (dragged !== null && dragged.node !== null){
              var p = particleSystem.fromScreen(s)
              dragged.node.p = p
            }
 
            return false
          },
 
          dropped:function(e){
            if (dragged===null || dragged.node===undefined) return
            if (dragged.node !== null) dragged.node.fixed = false
            dragged.node.tempMass = 50
            dragged = null
            selected = null
            $(canvas).unbind('mousemove', handler.dragged)
            $(window).unbind('mouseup', handler.dropped)
            _mouseP = null
            return false
          }
        }
        $(canvas).mousedown(handler.clicked);
 
      }
 
    }
 
    // helpers for figuring out where to draw arrows (thanks springy.js)
    var intersect_line_line = function(p1, p2, p3, p4)
    {
      var denom = ((p4.y - p3.y)*(p2.x - p1.x) - (p4.x - p3.x)*(p2.y - p1.y));
      if (denom === 0) return false // lines are parallel
      var ua = ((p4.x - p3.x)*(p1.y - p3.y) - (p4.y - p3.y)*(p1.x - p3.x)) / denom;
      var ub = ((p2.x - p1.x)*(p1.y - p3.y) - (p2.y - p1.y)*(p1.x - p3.x)) / denom;
 
      if (ua < 0 || ua > 1 || ub < 0 || ub > 1)  return false
      return arbor.Point(p1.x + ua * (p2.x - p1.x), p1.y + ua * (p2.y - p1.y));
    }
 
    var intersect_line_box = function(p1, p2, boxTuple)
    {
      var p3 = {x:boxTuple[0], y:boxTuple[1]},
          w = boxTuple[2],
          h = boxTuple[3]
 
      var tl = {x: p3.x, y: p3.y};
      var tr = {x: p3.x + w, y: p3.y};
      var bl = {x: p3.x, y: p3.y + h};
      var br = {x: p3.x + w, y: p3.y + h};
 
      return intersect_line_line(p1, p2, tl, tr) ||
            intersect_line_line(p1, p2, tr, br) ||
            intersect_line_line(p1, p2, br, bl) ||
            intersect_line_line(p1, p2, bl, tl) ||
            false
    }
 
    return that
  }    
  
})()
js плохо знаю, ткните что править, чтобы получилось сделать ссылку на круге.
Ответ: да заменяем функцию на следующий код:
Код Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
initMouseHandling:function(){
    // no-nonsense drag and drop (thanks springy.js)
    selected = null;
    nearest = null;
    var dragged = null;
    var oldmass = 1
    var mouse_is_down = false;
    var mouse_is_moving = false
 
 
    // set up a handler object that will initially listen for mousedowns then
    // for moves and mouseups while dragging
    var handler = {
      mousemove:function(e){
        if(!mouse_is_down){
          var pos = $(canvas).offset();
          _mouseP = arbor.Point(e.pageX-pos.left, e.pageY-pos.top)
          nearest = particleSystem.nearest(_mouseP);
 
          if (!nearest.node) return false
          selected = (nearest.distance < 50) ? nearest : null
          if(selected && selected.node.data.link){
            dom.addClass('linkable')
          } else {
            dom.removeClass('linkable')
          }
        }
        return false
      },
      clicked:function(e){
        var pos = $(canvas).offset();
        _mouseP = arbor.Point(e.pageX-pos.left, e.pageY-pos.top)
        nearest = particleSystem.nearest(_mouseP);
 
        if (!nearest.node) return false
        selected = (nearest.distance < 50) ? nearest : null
 
        if (nearest && selected && nearest.node===selected.node){
          var link = selected.node.data.link
          if (link.match(/^#/)){
             $(that).trigger({type:"navigate", path:link.substr(1)})
          }else{
             window.open(link, "_blank")
          }
          return false
        }
      },
      mousedown:function(e){
        var pos = $(canvas).offset();
        _mouseP = arbor.Point(e.pageX-pos.left, e.pageY-pos.top)
        selected = nearest = dragged = particleSystem.nearest(_mouseP);
 
        if (dragged.node !== null) dragged.node.fixed = true
 
        mouse_is_down = true
        mouse_is_moving = false
 
        $(canvas).bind('mousemove', handler.dragged)
        $(window).bind('mouseup', handler.dropped)
 
        return false
      },
      dragged:function(e){
        var old_nearest = nearest && nearest.node._id
        var pos = $(canvas).offset();
        var s = arbor.Point(e.pageX-pos.left, e.pageY-pos.top)
 
        mouse_is_moving = true
 
        if (!nearest) return
        if (dragged !== null && dragged.node !== null){
          var p = particleSystem.fromScreen(s)
          dragged.node.p = p
        }
 
        return false
      },
 
      dropped:function(e){
        if (dragged===null || dragged.node===undefined) return
        if (dragged.node !== null) dragged.node.fixed = false
        dragged.node.tempMass = 50
        dragged = null
        selected = null
        $(canvas).unbind('mousemove', handler.dragged)
        $(window).unbind('mouseup', handler.dropped)
        _mouseP = null
 
        if(mouse_is_moving){
          // console.log("was_dragged")
        } else {
          handler.clicked(e)
        }
 
        mouse_is_down = false
 
        return false
      }
    }
    $(canvas).mousedown(handler.mousedown);
    $(canvas).mousemove(handler.mousemove);
 
  }
 
}
и html + js код правим на добавляем поле link с google.com
Код Javascript
1
2
3
4
5
6
7
8
   <canvas id="viewport" width="1024" height="800" border="1px"></canvas>
      <script language="javascript" type="text/javascript">
            var sys = arbor.ParticleSystem(1000, 400,1);
            sys.parameters({gravity:true});
            sys.renderer = Renderer("#viewport") ;
            var data = {
               nodes:{
                 animals:{'color':'#0F751C','shape':'dot','label':google','link':'http://google.com'},
Вот вопрос, как добавить еще св-во css cursor : pointer на круги?

Добавлено через 58 минут
вариант добавить св-во cursor : pointer для canvas не очень хорошее решение.
Вопрос: Простейшее взаимодействие Javascript + HTML

Сайт автора shcheglov.clan.su. Страницы сайта - на HTML, алгоритмы - на Javascript по схеме <html>... <javascript>... </javascript>... </html>.
Сейчас управление ветвями алгоритма c помощью var n= prompt("введите n"), заданной в Javascript.

Как сделать простейшее управление (без функций и т.д.) типа input при непосредственном задании "n" кнопками button или гиперссылками href ?
В каких местах текста HTML и/или Javascript разместить операторы, задающие "n" по кнопке, и принимающие значение "n" в тексте Javascript? Спасибо!
Ответ:
shch08
p.s. too. Тоже совет. Js, HTML, C+ ... - это инструменты, т.е. форма (в философском смысле), а есть еще содержание...

Разве мы что-то обсуждали по данному поводу? Не припомню.

shch08
Советую заняться своим "содержанием", да и формой, раз не можете ответить на пустяковый вопрос. Кстати, все решено.

Я не являюсь специалистом по ukoz и мне он совсем скажем так неинтересен. Я просто хотел дать Вам понять, что вопрос был некорректно, потому получили ряд соответствующих вопросов ответов.

ПС. Рад, что у Вас все получилось.
Вопрос: javascript и центровка окна

Дорогие друзья !

Очень неловко, можно ли небольшой вопрос по Javascript и центровке? С ориентацией на простейший игровой продукт… У меня Win 7...

1.    Очень хочу, чтобы игры открывалась в новом окне… Если новое окно тупо
var newWin = window.open("http://myname.narod.ru/Mygame.html",   "MyGame", "width=803,height=730,resizable=no,scrollbars=no,status=yes");   
то: в Macromedia Homesite идет стандартное новое окно в IE (у меня по умолчанию GoogleChrome), стандартное, описанное в учебнике по javascript отступление сверху и от левого края, и, может быть, на все хоть как-то, хоть и на слабенькую троечку...
В порядке сплетни (или занятной информации, как кому нравится но: именно здесь как раз и первый вопрос): когда я это все гружу на свой любимый "народный" сервер  (т.е. на myname.narod.ru), то он сразу же к этому цепляет свою любимый код 
<script src="http://s205.ucoz.net/cgi/uutils.fcg?a=get_preroll_cookie&r=0.236032838331287"></script><script type="text/javascript" src="/abnl/?adsdata=ANFcGQkEr!45p;Elieqn2XFwelMfg23aHVQ8Vg31Nzi6I8M;iphgQw!d2dqw!RE7YpDZa0iZ9lzA9jmdkcrvwAALhA2gUT547OVi5QDqO0pAEJgMHXK0kttbaIhaTM4h03ahpFNbh4PxcRXIVDmpxq6R7fXXu2t0Nqswi66^LdqH7F1fXpauDFyQjSPY;woo"></script>
и лишь потом идет мое стандартное
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head><title>my_title</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 далее <script> и т.д.
И НЕТ НИКАКОГО НОВОГО ОКНА...
Мое мнение: по причине "народности" моего сервера провести эксперименты полноценно я не могу... хотя... на мою команду alert в коде реакция есть...

2.    Есть еще один вопрос по тому же javascript: если усложнить var newWin до попытки самой лобовой центровки изображения

var mw_l;  mw_l = (window.screen.width -803)/2; // alert (" mw = " + mw);    
    var mh_h;  mh_h = (window.screen.height - 730)/2;
    alert (" mw_l = " + mw_l + " mh_h = " + mh_h);    // И - внимание - НЕЧТО НОВОЕ С ЦЕНТРОВКОЙ        
var newWin = window.open("http://wladmoscow.narod.ru/2016/perfect_2016_mono.html",
   "MyGame", "left = mw_l, top=mh_h,width=803,height=730,resizable=no,scrollbars=no,status=yes");  

то ничего хорошего не происходит даже на Macromedia Homesite: окошко с игрой  тупо забивается в левый угол...

С уважением
Влад

Ответ:
...я бы рекомендовал отказаться от практики открытия нового окна, т.к. и браузеры и плагины (adblock plus) только и настроены на их блокировку.
Если Вы хотите, чтобы люди играли в Ваш тетрис, не обязательно открывать страницу с игрой как всплывающее отдельное окно. Оставьте как есть - просто переход по ссылке (просто тег "a" без javascript) на страницу "perfect_2016_mono.html", а вот сам флесш-объект игры средствами css центрируете как Вам захочется.

Есть еще вариант. Если так хочется создать видимость, что тетрис открывается в отдельном окне, то можно воспользоваться javascript-библиотеками на подобии lightbox (раз Вы уже используете jQuery, то поищите, что подойдет здесь  или jQueryUi Dialog (http://jqueryui.com/dialog/). Они позволяют создавать плавающие окна с любым содержимым. Можно отображать сам флесш-объект, можно в iframe отображать страницу "perfect_2016_mono.html". При этом физического перехода на новую страницу не происходит, все крутится на уже открытой странице, не напрягая браузеры, плагины и антивирусы.

В общем, как-то так.

Этот ответ добавлен с нового Винграда - 
Вопрос: JavaScript parser xml

Добрый день,
помогите пожалуйста пропарсить данные и разобраться как это все работает.

Задача:
Есть запрос который возвращает данные (Вопросы с вариантами) например:
1)Укажите ваш пол.
Мужчина
Женщина
2)Укажите возраст.
От 18-25
От 26-45
От 45-59
От 60 и выше.

Как понимаете запрос возвращает иногда 2 ответа иногда 6. Мне нужно исходя из результата, нарисовать в виде html и привязать обработчик к кнопке чтоб при клике была реакция.

Пожалуйста подскажите как это сделать.
Огромное спасибо за поддержку и помощь
Ответ: BANO, Спасибо за отзыв и статью. На данный момент я делаю не нормальным способом.
Код Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$('.content').html("<h3>Вопрос №1</h3><div class='question_text' style='color:#555555'>Пожалуйста укажите свой возраст.</div><table class='q_table'cellspacing=\"0\" cellpadding=\"0\"><tr> <td  id='q_row' class='1_1'>18-25</td></tr><tr><td id='q_row'>26-45</td></tr><tr><td id='q_row'>46-60</td></tr><tr><td id='q_erow'>От 60 лет и выше</td></tr></table><p class='q_desc'>*Для выбора ответа нажмите на вариант из списка</p>");
        
        $('.1_1').click( function() {
        console.log('select:1' )
            var first = $('.1_1').text();
            alert(first);
 
            $.ajax({
                    type:"POST",
                    url: "requester.php?action=answer_request",
                    data: {
                        ansver:first,
                        cap_indicator:"0"
                    },
                    cache: false,
                    success: function(result_from){
                    alert('success');
                    alert(result_from);
                  },
                  error: function(){
                    alert('failure');
                  }
                }); 
                
        });
Хотел сделать это в виде одной функции, которая бы отправила запрос, приняла ответ, распарсила.
На данном этапе у меня 1 вопрос с 4 вариантами ответов, я должен реагировать на клик с вариантом, так как исходя из вопроса варинатов может быть больше, мне нужно написать код обработчика программно, я правильно понял? Просто я не знаю как это правильно делается искал искал но не нашел. По этому обратился за помощью.