Javascript 未捕获的语法错误:意外的标识符?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/10922885/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-24 03:35:15  来源:igfitidea点击:

Uncaught syntaxerror: unexpected identifier?

javascript

提问by markj287

I can't seem to correct the error the console is talking about can anyone help me. My code is below. I created a web form that saves the data to local storage and displays it on screen then deletes all the stored data if we want. But for some reason it won't take the data from the form at all.

我似乎无法纠正控制台正在谈论的错误,任何人都可以帮助我。我的代码如下。我创建了一个 Web 表单,将数据保存到本地存储并显示在屏幕上,然后根据需要删除所有存储的数据。但出于某种原因,它根本不会从表单中获取数据。

// Wait until the DOM is ready 
window.addEventListener("DOMContentLoaded", function (){
  // getElementById function
  function $(x) {
    var theElement = document.getElementById(x);
    return theElement;
  } // end theElement function

  function makeCats () {
    var formTag = document.getElementsByTagName("form"), // form tag is an array
    selectListItem = $('select'),
    makeSelect = document.createElement('select'),
    makeSelect.setAttribute("id", "groups");
    for(var i=0, j=notesCategories; i<j; i++) {
      var makeOption = document.createElement('option');
      var optionText = notesCategories[i]
      makeOption.setAttribute("value", "optionText");
      makeOption.innerHTML = optionText;
      makeSelect.appendChild(makeOption);
    } // end for loop
    selectListItem.appendChild(makeSelect);
  } // end makeCat function

  function getSelectedRadioBtn() {
    var radio = document.forms[0].favNote 
    for (var i=0; i<radio.length; i++) {
      if(radio[i].checked) {
        favoriteValue = radio[i].value;
      } // end if
    } // end for loop
  } // end get selected radio btn function

  function getcheckedBoxBtn() {
    if($('fav').checked) {
      favoriteValue = $('fav').value;
    } else {
      favoriteValue = "No"
    }
  } // end function

  function toggleControls(a) {
    switch(a){
      case "on":
        $('noteForm').style.display = "none"
        $('clear').style.display = "inline"
        $('displayLink').style.display = "none"
        break
      case "off":
        $('noteForm').style.display = "block"
        $('clear').style.display = "inline"
        $('displayLink').style.display = "inline"
        $('items').style.display = "none"
        break
      default:
        return false;
    }
  }

  function saveNotes() {
    var id                  = Math.floor(Math.random()*1000001);
    // gather up all form fields values and store them in an object 
    // object properites will contain an array with form labels and input values 

    getSelectedRadioBtn(); // calls function
    getcheckedBoxBtn();
    var item                = {}
    item.group          = ["Group", $('groups').value ];
    item.notetitle      = ["Title", $('notetitle').value ];
    item.noteinfo       = ["Note", $('noteinfo').value ];
    item.date           = ["Date", $('date').value ];
    item.items          = ["Number of Itmes", $('items').value ];
    item.attach         = ["Attach a File", $('attach').value ];
    item.favorite       = ["Favorite Note", favoriteValue ];

    // save data into local storage. Use stringify to convert our object to a string 
    localStorage.setItem(id, JSON.stringify(item));

    alert("Note Saved");
  } // end store data function

  function getNotes() {
    toggleControls("on");
    var makeDiv = document.createElement('div');
    makeDiv.setAttribute("id", "items");
    var createList = document.createElement('ul');
    makeDiv.appendChild(createList) // puts createList into ul element created above 
    document.body.appendChild(makeDiv) // attach makeDiv to the document 
    $('items').style.display = "block";
    for(i=0, entries=localStorage.length; i<entries; i++) {
      var createLi = document.createElement('li');
      createList.appendChild(createLi);
      var key = localStorage.key(i);
      var value = localStorage.getItem(key);
      var savedNote = JSON.parse(value); // parse the save note object back into an object 
      var createSubList = document.createElement('ul');
      var createLi.appendChild(createSubList);
      for(a in savedNote) {
        var creatSubListItem = document.createElement('li');
        createSubList.appendChild(creatSubListItem)
        var subText = savedNote[a][0] + " " + savedNote[a][1];
        creatSubListItem.innerHTML = subText;
      } // end for in loop
    } // end for loop
  } // end getNotes function


  function clearNotes() {
    if(localStorage.length === 0){
      alert("Move along buddy, nothing here to clear.");
    } else {
      localStorage.clear()
      alert("All notes are deleted");
      window.location.reload();
      return false;
    } // end if 
  } // end clearNotes function


  // Variables defaults 
  var notesCategories = ["--Choose a Category--       ","Grocery","Fitness","Entertainment","Dining","Shopping","Sports"],
  favoriteValue = "No";
  makeCats();


  // Set links and submits click events 
  var displayLink = $('displayLink');
  displayLink.addEventListener("click", getNotes);
  var clearLink = $('clear');
  clearLink.addEventListener("click", clearNotes);
  var save = $('submit');
  save.addEventListener("click", saveNotes);


}) // end main function

回答by Dono

There are errors here :

这里有错误:

var formTag = document.getElementsByTagName("form"), // form tag is an array
selectListItem = $('select'),
makeSelect = document.createElement('select'),
makeSelect.setAttribute("id", "groups");

The code must change to:

代码必须更改为:

var formTag = document.getElementsByTagName("form");
var selectListItem = $('select');
var makeSelect = document.createElement('select');
makeSelect.setAttribute("id", "groups");

By the way, there is another error at line 129 :

顺便说一下,第 129 行还有一个错误:

var createLi.appendChild(createSubList);

Replace it with:

替换为:

createLi.appendChild(createSubList);