(Javascript)-未捕获的SyntaxError:输入意外结束

时间:2018-11-18 20:49:10

标签: javascript ajax attributes

以下代码在标题中生成错误:我确定它与 this.getAttribute('data-name')有关,因为如果删除它,一切正常。

var id = item.registrationID;
var nome = item.registrationName;

document.getElementById('divPaziente').innerHTML += "<button class='button button-block button-positive' id='"+id+"' data-name='"+nome+"' onclick='redi(this.id, this.getAttribute('data-name'));'>"+nome+' '+cognome+' - '+id_referenza_paziente+"</button>";

window.redi = function(id, nome)
{
  alert(id);
  alert(nome);
  localStorage.setItem("id", id);
}

3 个答案:

答案 0 :(得分:0)

您必须转义'围绕数据名,因为该字符串将被视为以“ getAttribute('”)结尾。

'redi(this.id, this.getAttribute('data-name'));'
^                                ^
|                                |
+-Start of string.               +- End of string (escape it..)

答案 1 :(得分:0)

第一个解决方案:

来自:

redi(this.id, this.getAttribute('data-name'));

收件人:

"' onclick=\"redi(this.id, this.getAttribute('data-name'));\">"

var item = {registrationID: 1, registrationName: 'name'};
var cognome = "cognome";
var id_referenza_paziente = "id_referenza_paziente";
var id = item.registrationID;
var nome = item.registrationName;

document.getElementById('divPaziente').innerHTML +=
        "<button class='button button-block button-positive' id='" + id + "' data-name='"+ nome +
        "' onclick=\"redi(this.id, this.getAttribute('data-name'));\">" +
        // "' onclick='redi(this.id, this.dataset.name);'>" +
        nome +' '+ cognome + ' - ' + id_referenza_paziente + "</button>";

window.redi = function(id, nome)
{
    alert(id);
    alert(nome);
    localStorage.setItem("id", id);
}
<div id="divPaziente"></div>

第二个解决方案(基于dataset):

来自:

redi(this.id, this.getAttribute('data-name'));

收件人:

"' onclick='redi(this.id, this.dataset.name);'>"

var item = {registrationID: 1, registrationName: 'name'};
var cognome = "cognome";
var id_referenza_paziente = "id_referenza_paziente";
var id = item.registrationID;
var nome = item.registrationName;

document.getElementById('divPaziente').innerHTML +=
        "<button class='button button-block button-positive' id='" + id + "' data-name='"+ nome +
        "' onclick='redi(this.id, this.dataset.name);'>" +
        nome +' '+ cognome + ' - ' + id_referenza_paziente + "</button>";

window.redi = function(id, nome)
{
    alert(id);
    alert(nome);
    localStorage.setItem("id", id);
}
<div id="divPaziente"></div>

答案 2 :(得分:0)

我已经使用this.getAttribute(&quot;data-name&quot;)解决了。