简体   繁体   English

试图简化这个功能,所以我不必运行它 9 次

[英]Trying to simplify this function so I don't have to run it 9 times

I am building a day scheduler.我正在构建一个日程安排程序。 I figured out how to save my local storage on a single hour field, but I need to simplify this function so I don't have to write it 8 times.我想出了如何将我的本地存储保存在一个小时字段上,但我需要简化这个函数,这样我就不必写 8 次了。 Can someone point me in the right direction so I can use this 1 function on each hour field.有人可以指出我正确的方向,以便我可以在每小时字段中使用这个 1 函数。

ie: 7am.即:早上 7 点。 8am.早上 8 点。 9am.早上9点。

 function setColor(element, color) { element.style.backgroundColor = color; } //6am function save_data() { var input = document.getElementById('textArea6').value; localStorage.setItem('text6', input); } document.getElementById('textArea6').value = localStorage.getItem('text6'); //7am function save_data() { var input = document.getElementById('textArea7').value; localStorage.setItem('text7', input); } document.getElementById('textArea7').value = localStorage.getItem('text7'); let textArea = ['textArea6', 'textArea7', 'textArea8', 'textArea9', 'textArea10', 'textArea11', 'textArea12', 'textArea12', 'textArea14'] let textContent = ['text6', 'text7', 'text8', 'text9', 'text10', 'text11', 'text12', 'text13', 'text14'] let textKet = []; textArea({ id: 'textArea6', value: 'text6' })
 <div class="row" id='6'> <div class='col-2 hour'> 6am </div> <div class="col-8 form-group"> <textarea class="form-control bg-transparent" id="textArea6" name="text6" rows="1"></textarea> </textarea> </div> <div class="col-2 saveBtn"> <button onclick='save_data()' type="submit" id="" class="btn btn-primary mb-2">Save</button> </div> </div> <div class="row" id='7'> <div class='col-2 hour'> 7am </div> <div class="col-8 form-group"> <textarea class="form-control bg-transparent" id="textArea7" name="text7" rows="1"></textarea> </textarea> </div> <div class="col-2 saveBtn"> <button onclick='save_data()' type="submit" id="" class="btn btn-primary mb-2">Save</button> </div> </div>

You could use some data-attribute so each button has a 'number' to reference the needed textarea.您可以使用一些数据属性,以便每个按钮都有一个“数字”来引用所需的文本区域。

You should change the buttons so each one has a different data-num :您应该更改按钮,以便每个按钮都有不同的data-num

<div class="row" id='6'>
  <div class='col-2 hour'> 6am
  </div>
  <div class="col-8 form-group">
    <textarea class="form-control bg-transparent" id="textArea6" name="text6" rows="1"></textarea>
    </textarea>
  </div>

  <div class="col-2 saveBtn">
    <button onclick='save_data(this)' data-num="6" type="submit" id="" class="btn btn-primary mb-2">Save</button>
  </div>
</div>

<div class="row" id='7'>
  <div class='col-2 hour'> 7am
  </div>
  <div class="col-8 form-group">
    <textarea class="form-control bg-transparent" id="textArea7" name="text7" rows="1"></textarea>
    </textarea>
  </div>

  <div class="col-2 saveBtn">
    <button onclick='save_data(this)' data-num="7" type="submit" id="" class="btn btn-primary mb-2">Save</button>
  </div>
</div>

and then update your save_data() function to:然后将您的save_data()函数更新为:

function save_data(e){
    var number = $(e).data('num');
    var input = document.getElementById('textArea' + number).value;
    localStorage.setItem('text' + number, input);
}

And to initialize the values from the localStorage you could use a for loop like this:并且要从 localStorage 初始化值,您可以使用这样的for循环:

for(var i = 6; i <= 14; i++){
    document.getElementById('textArea' + i).value = localStorage.getItem('text' + i);
}

NOTE: i used var since you did.注意:自从您使用以来,我就使用了var Please consider using a newer version of javascript ans use let and const instead.请考虑使用较新版本的 javascript 并使用letconst代替。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 为什么我必须点击 2 次才能运行这个 function? - Why I have to click 2 times to run this function? 运行特定事件序列的按钮(我不知道如何简化的冗长代码) - Buttons that run a specific sequence of events (verbose code that I don't know how to simplify) 我该如何重写此功能,而不必显式键入范围内的每个IP地址? - How can I rewrite this function so I don't have to explicitly type out every IP address within a range? 如何将后面代码中的循环创建的 Javascript 函数组合到一个函数中,这样我就不必重复了? - How could I combine Javascript functions created by a loop in the code behind in to one function so I don't have to repeat? Javascript - Codepen 尝试使用数组更改我的 html 内容的顺序,我的函数正在运行但不太好,我不明白为什么 - Javascript - Codepen trying to change order of my html content using an array my function is working but not so well i don't understand why Javascript:为什么我必须单击 2 次才能运行该功能? - Javascript : why i have to click 2 times to run the function? 所以我试图在一个数组中获取我的 axios 响应,但我不知道该怎么做 - So i'm trying to get my axios response in an array and I don't know how to do it 我不想两次调用自定义函数 - I don't want to have to call custom function twice 我该如何进行变量设置,以免在以后的功能中重复自己 - How can I make variables so that I don't have to repeat myself in future functions 我该如何修改此代码,以便不必对对象进行排序? - How can I amend this code so that I don't have to sort an Object?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM