Javascript传递信息

时间:2013-12-03 17:52:58

标签: javascript ruby

我是Javascript的新手,并尝试制作一个简单的计算器网络应用程序。下面是以下代码,并想知道如何将onclick事件的信息传递给出现的文本框。如你所见,我也在使用Ruby。是不是可以同时使用Ruby和Javascript?提前感谢您提供任何帮助!

<INPUT TYPE="text"   NAME="Input" Size="16">

<% numbers_3 = [7, 8, 9] %>
<% numbers_2 = [4, 5, 6] %>
<% numbers_1 = [1, 2, 3] %>

<br>

<%  numbers_3.each do |number| %>
  <%= button_tag number %>
<%    end %>
<%= button_tag "x" %>

<br>

<%  numbers_2.each do |number| %>
  <%= button_tag number %>
<%    end %>
<%= button_tag "-" %>

<br>

<%  numbers_1.each do |number| %>
  <%= button_tag number %>
<%    end %>
<%= button_tag "+" %>

<br>


<%= button_tag "c" %> <script> VALUE="  c  " OnClick="Calc.Input.value += '' "> </script>
<%= button_tag "0" %> <script> VALUE="  0  " OnClick="Calc.Input.value += '0' "></script>
<%= button_tag "." %> <script> VALUE="  .  " OnClick="Calc.Input.value += '.' "></script>
<%= button_tag "=" %> <script> VALUE="  =  " OnClick="Calc.Input.value = eval(Calc.Input.value)"></script>

1 个答案:

答案 0 :(得分:0)

这里有太多错误指出这一切。没有正确实施这一部分:

<%= button_tag "c" %> <script> VALUE="  c  " OnClick="Calc.Input.value += '' "> </script>

这将输出如下内容:

<button name="button" type="submit">c</button><script>VALUE="  c  " OnClick="Calc.Input.value += '' "></script>

您似乎试图在不相关的脚本标记中设置<button>的属性,因为您认为<button>标记仍处于打开状态,但事实并非如此。怎么会这样呢?您已指定按钮的内容c,因此当然必须输出整个标记。 button_tag输出完整的标记,包括结束标记。你不是在一个开放的<button里面,即使你是,你也会输出可怕的html,因为你用随机的<script>标签包装东西。

所以,真正发生的是你有一个<button>没有做任何事情,以及一个不相关的<script>标签包含这个无效的JavaScript blob:

  VALUE="  c  " OnClick="Calc.Input.value += '' "> 

您不再位于<button>标记内,而是位于<script>标记内,因此您无法在其他随机标记上设置任意属性。您也无法将<script>标记嵌套在另一个标记的属性中。

如果您实际上是用HTML编写的,那么您需要以下内容:

<button value="c" onclick="Calc.Input.value += ''">c</button>

在任何地方都没有<script>个标记,因为这不是<script>标记的用途。如果您要编写内联JavaScript,您可以编写它,不要将脚本标记注入属性。

那就是说,你不应该写内联JavaScript。您应该为您的按钮提供唯一的ID,然后将不引人注目的JavaScript处理程序绑定到它们:

<script>
$('button1').click(function () { Calc.Input.value += ''; });
<script>

<button id="button1">c</button>

如果你想使用Rails助手,你可以这样写:

<%= button_tag 'c', value: '  c  ', onclick: 'Calc.Input.value += ""' %>

但同样,您不应使用内联onclick属性。