代码之家  ›  专栏  ›  技术社区  ›  jamesMcKey

使用javascript编写HTML脚本时出现语法错误

  •  0
  • jamesMcKey  · 技术社区  · 6 年前

     loadNextContainer.innerHTML = '<span class="sr_43" id="srloadnext_2" onclick="srt.loadNextMatchRecords(\''+numDownloadSoFar+'\', \''+maxDownloadLimit+'\', \''+folderName+'\', \''+jsonHashTags+'\', \''+fromDate+'\', \''+toDate+'\', \''+lastScanId+'\')">LoadNext</span>';
    

    错误消息:

     Uncaught SyntaxError: Invalid or unexpected token
    

    我相信错误会围绕函数变量旋转。尤其是JSON变量。我不能为JSON中的每个元素更改双引号的用法。所以这必须留在任何解决方案中。

    enter image description here

    3 回复  |  直到 6 年前
        1
  •  0
  •   David784    6 年前

    从你对变量的印象来看 template literal 解决方案将帮助您,因为至少有一个参数是数组。

    innerHTML . 但这将是非常困难的。你最终需要使用 JSON.stringify 以获取数组的字符串版本。

    var s = document.createElement('span');
    s.className = 'sr_43';
    s.id = 'srloadnext_2';
    s.innerText = 'LoadNext';
    loadNextContainer.appendChild(s);
    s.onclick = function(e) {
      srt.loadNextMatchRecords(numDownloadSoFar, maxDownloadLimit, folderName, jsonHashTags, fromDate, toDate, lastScanId);
    };
    
        2
  •  2
  •   Tanner Babcock    6 年前

    loadNextContainer.innerHTML = `<span class="sr_43" id="srloadnext_2" onclick="srt.loadNextMatchRecords('`+numDownloadSoFar+`', '`+maxDownloadLimit+`', '`+folderName+`', '`+jsonHashTags+`', '`+fromDate+`', '`+toDate+`', '`+lastScanId+`')">LoadNext</span>';
    

    或者只转义双引号而不是单引号。你这样做,当你试图逃脱时,你无意中打开了绳子。

    loadNextContainer.innerHTML = "<span class=\"sr_43\" id=\"srloadnext_2\" onclick=\"srt.loadNextMatchRecords('"+numDownloadSoFar+"', '"+maxDownloadLimit+"', '"+folderName+"', '"+jsonHashTags+"', '"+fromDate+"', '"+toDate+"', '"+lastScanId+"')\">LoadNext</span>";
    
        3
  •  0
  •   Favnyr    6 年前

    尝试使用模板文本:

    loadNextContainer.innerHTML = `<span class="sr_43" id="srloadnext_2" onclick="srt.loadNextMatchRecords(\'${numDownloadSoFar}\', \'${maxDownloadLimit}\', \'${folderName}\', \'${jsonHashTags}\', \'${fromDate}\', \'${toDate}\', \'${lastScanId}\')">LoadNext</span>`;
    

    编辑: