【问题标题】:Javascript initializtion code running multiple times [duplicate]Javascript初始化代码多次运行[重复]
【发布时间】:2018-02-19 04:00:28
【问题描述】:

我有一个 html 按钮元素,它的属性 onclick="onprof()" 被正确调用。该按钮位于<script> 元素上方,这是</body> 标记之前的最后一件事。我在包含代码var product = [] 的行设置了一个断点,该代码在页面重新加载时被激活。然后我点击调用该函数的按钮(我在那里也有一个断点)并且工作正常,但随后它转到我原来的断点并最终破坏了代码,因为它重新初始化了我的变量product 的值。为什么那个 Javascript 被再次调用,我怎么不能让它被调用?

       <script type="text/javascript">

            var product = [];
            var temp=[]; 
            temp.push(1);
            temp.push("PET");
            product.push(temp);
            temp = [];
            temp2 = [];
            function onprof()
            {
               //alert(product);
                document.getElementById("typeform").innerHTML = product.toString();
            }
            function onprod()
            {

            }
            function onser()
            {

            }

        </script>

【问题讨论】:

  • &lt;button&gt; 元素是否是 &lt;form&gt; 的一部分?试试onclick="onprof(); return false"
  • 它不应该再次调用该代码。我唯一能想到的是页面正在重新加载。
  • 为什么您看到这让您认为产品正在重新初始化?
  • @EmptyArsenal OP 说他们在调试器中再次命中第一行的断点。
  • @Matthew no,Barmar(不是我)在称赞您实际使用了本网站上很少出现的调试器

标签: javascript html


【解决方案1】:

看起来您有一个form,其中包含button。提交时,表单会重新加载页面。您可以通过以下任一方式禁用此行为:

  1. 将按钮类型设置为type="button"。默认是提交。

  1. 从您的onprof 函数返回false 并使用onclick="return onprof()"

【讨论】:

  • type=button 效果很好!谢谢你。我也试过只返回 false ,但它似乎没有用,但也许我做的不对,但现在一切正常。
  • @Phil - 感谢您的编辑。我对SO有点陌生。下一次,我会在发布答案之前尝试澄清假设。干杯。
  • @Matthew - 从@Phil 签出编辑。你也需要从onclick返回。
猜你喜欢
  • 1970-01-01
  • 2015-03-12
  • 2019-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多