我是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>
答案 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
属性。