5

首先,是否可以直接在带有 onclick 属性的 html 中编写 if/else 语句?如果是这样,为什么我的代码不起作用?

所以这是一个按钮。“Calc.Input.value”指的是文本输入,如果该字段为 0 或空白,我想显示错误消息。如您所见,在所有其他情况下,我希望发生其他一些事情。但这无关紧要,因为“其他”之后的所有内容之前都运行良好。

<INPUT TYPE="button" NAME="drop" id="dropbutton" style="background-color:#D1E8D5;" VALUE="
Släpp ankare " OnClick="if ("Calc.Input.value == ''" || "Calc.Input.value == '0'")
{window.alert("Please enter a number");} else 
{document.getElementById('dropbutton').value=' Justera 
längd ';document.getElementById('length').innerHTML =
Calc.Input.value;document.getElementById('dropbutton').style.cssText = 'background-
color:#FFF6B3;';}">
4

5 回答 5

23

只是不要把它放在 onclick 属性中。

利用

<INPUT TYPE="button" NAME="drop" id="dropbutton" style="background-color:#D1E8D5;" VALUE="Släpp ankare ">
<script>
document.getElementById('dropbutton').onclick = function() {
    if (Calc.Input.value == '' || Calc.Input.value == '0') {
         window.alert("Please enter a number");
    } else {
        document.getElementById('dropbutton').value=' Justera längd ';
        document.getElementById('length').innerHTML = Calc.Input.value;
        document.getElementById('dropbutton').style.backgroundColor = '#FFF6B3';
    }
    return false;
}
</script>
于 2013-03-12T19:39:56.807 回答
4

您的代码不起作用的原因是您需要转义"引号,否则它将被解释为 HTML 属性符号。

我同意其他人的观点,在 HTML 中内联编写 JavaScript 是一种不好的做法。

于 2013-03-12T19:40:05.720 回答
2

sweetamylase 的回复是最好的,但您也可以考虑:

如果您的onclick=赋值包含在双引号中(onclick="..."),那么请尝试在这些双引号内仅使用单引号字符(反之亦然)。

当您需要在动态插入元素时对 onclick 事件进行分配并且拥有单独的脚本函数并不是一个好的选择时,这可以使事情变得更容易。

例子:

<button onclick="alert('Do this'+' and that')">Press This</button>
于 2015-01-01T03:56:07.307 回答
2

嗯,但是对于这样的事情怎么样:

<a href="#" onclick="if (a_function_to_get_language() == 'en') {
    alert('Some message');
}
else {
    alert('Some message in a different language');
}">Action</a>
于 2015-08-19T21:14:11.160 回答
0

  • 导航页面上的警报
  •            <script>
                  function myFunction() {
                alert("You Are Not Signed In!");
                       }
                     </script>
    
    于 2017-04-11T12:19:14.457 回答