Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的javascript代码在if语句中没有递增/递减_Javascript_Html_Forms_Counter - Fatal编程技术网

我的javascript代码在if语句中没有递增/递减

我的javascript代码在if语句中没有递增/递减,javascript,html,forms,counter,Javascript,Html,Forms,Counter,我正在创建一个表单,该表单将有多个项目可供选择,并检查inadd/increment和checkoutminus/Decremen,并且它仅在laptop变量等于1时工作。我想设置一个项目的总量,然后无论他们选择什么选项,它都会增加或减少与该项目相关的变量。我也无法找到一种方法来确保变量不会在每次窗体关闭和再次打开时重置 函数updateCount表单{ //需要找出关闭时计数不重置为总计的方法 类型 //仅当设置为1时有效 var=1; 如果选中form.option1.checked&&f

我正在创建一个表单,该表单将有多个项目可供选择,并检查inadd/increment和checkoutminus/Decremen,并且它仅在laptop变量等于1时工作。我想设置一个项目的总量,然后无论他们选择什么选项,它都会增加或减少与该项目相关的变量。我也无法找到一种方法来确保变量不会在每次窗体关闭和再次打开时重置

函数updateCount表单{ //需要找出关闭时计数不重置为总计的方法 类型 //仅当设置为1时有效 var=1; 如果选中form.option1.checked&&form.optionin.checked{ 笔记本电脑++; 警告您的响应已被记录; } 如果选中了form.option1&&form.optionout.checked{ 笔记本电脑; 警告您的响应已被记录; } 如果form.option1.checked&&form.optionout.checked&&laptop==0{ 警报项当前不可用,请选择其他项; }} CS设备雷诺表 我假设var=1;应保存可用笔记本电脑的数量

这里的问题是,您在应该实际管理它的函数中声明了它-因此您基本上是在每次调用此函数时重置它

要解决这个问题,您需要将其设置为一个全局变量—该变量在函数updateCount form{}之前和之外定义

此外,您应该去掉输入字段上的onclick事件,而是在表单本身上使用onsubmit事件。通过这种方式,您可以在表单实际提交之前对其进行验证

看看这个例子:

var=1; 函数updateCountform{ 如果选中form.option1.checked&&form.optionin.checked{ 笔记本电脑++; 警报您的响应已被记录; 返回true; } 如果选中了form.option1&&form.optionout.checked{ 笔记本电脑; 警报您的响应已被记录; 返回true; } 如果form.option1.checked&&form.optionout.checked&&laptop==0{ alertItem当前不可用,请选择其他项目; 返回false; } 返回false; } CS设备雷诺表 这里有很多问题:

1-form.option1不是访问id为option1的复选框的有效方法。改用document.getElementByIdoption1。optionin和optionout也是如此

2-您的按钮具有submit类型,它将重新加载页面并重置您的可变笔记本电脑,除非您使用cookie或localStorage保存它。防止按钮刷新页面的一种简单方法是将其类型更改为button

3-正如@Undermark的回答所指出的,您应该在updateCount函数之外声明变量laptop

4-我相信您不希望用户同时选择签入和签出。为此,请使用单选按钮而不是复选框。请注意,两个单选按钮具有相同的“名称”属性,因此不能同时选择这两个按钮

var=1//只要页面未刷新,就不会重置 //防止刷新页面的一种方法是将按钮类型更改为button 函数updateCount表单{ var laptop=document.getElementByIdoption1; var option_in=document.getElementByIdcheckIn; var option_out=document.getElementByIdcheckOut; 如果laptop.checked&&option\u in.checked{ 笔记本电脑++; 提醒您的响应已被记录-签入; } 如果laptop.checked和option_out.checked{ 笔记本电脑; 提醒您的响应已被记录-签出; } 如果laptop.checked&&option_out.checked&&laptop==0{ 警报项当前不可用,请选择其他项; } } CS设备雷诺表
将按钮类型更改为button您是web开发新手吗?因为如果这是您的实际代码,并且您希望跟踪签出的笔记本电脑的数量,那么在构建此代码之前,您还需要学习服务器端开发。如果您只需要在一台计算机上工作,而不需要从任何其他计算机访问数据,则可以使用本地存储来存储笔记本电脑的数量。此外,您还需要重新构造代码,因为为每个表单选项使用三个if语句是一个糟糕且无法维护的解决方案。form.option1不是访问复选框的有效方法。要扩展这个答案,@mias,您确实需要阅读javascript中上下文的概念