Search code examples
javascriptstringonclicksyntax-errorinnerhtml

JavaScript I can't send string parameter to function even I can send int parameter with div.innerHTML on click event


script type="text/javascript"> 
function QueryAgain(teammate){
document.getElementById("researcher-name").value=teammate;
document.getElementById("publication-name").value="";
document.getElementById("publication-year").value="";

}
function createDiv() { 
const boxes = document.querySelectorAll('.cards');
boxes.forEach(box => {
  box.remove();
});

for(var i=0;i<size;i++){
let div = document.createElement('div');
div.innerText = document.getElementById('getText').innerText;
div.id="card"+i;
div.innerHTML="<br />"+"<br />"+"<br />"+"<br />"+"RESEARCHER ID:"+researcher_id[i]+"<br />"+"RESEARCHER NAME:"+researcher_name[i]+"<br />"+"RESEARCHER SURNAME:"+researcher_surname[i]+"<br />"+"RESEARCHER PUBLICATON NAME:"+publication_name_general[i]+"<br />"+"RESEARCHER PUBLICATON YEAR:"+publication_year_general[i]+"<br />"+"RESEARCHER PUBLICATON PLACE:"+publication_place_general[i]+"<br />"+"RESEARCHER PUBLICATON TYPE:"+publication_type_general[i]+"<br />"+"RESEARCHER TEAMMATES NAME:"+"<br />"+"<br />"+"<br />"+"<br />"+"<br />"

for(var j=0;j<researcher_teammate[i].length;j++){
  holder=teammate_id_general[i][j];
  holder2=researcher_teammate[i][j];
  console.log(holder2);
  console.log(typeof(holder2));
  div.innerHTML+="<br />"+"<a href='#nav'id='teammate'"+'onclick=QueryAgain(\''+holder+'\')'+">"+researcher_teammate[i][j]+"</a>"+"<br />";
}
div.className="cards";                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
div.style.height="300px";
div.style.border="4px solid black";
div.style.background="#E2EFF3";
div.style.display= "flex";
div.style.alignItems="center";
div.style.justifyContent="center";
div.style.marginLeft="400px";
div.style.marginRight="400px";
div.style.marginTop="50px";
document.body.appendChild(div);
console.log(researcher_teammate_name);


}
const countAll = document.querySelectorAll('.cards').length;
console.log("COUNT ALL:",countAll);
function getIdFormA(obj) {
  window.alert(window.location.href += "?id=" + obj);
}


}
</script>

Here is my some part of my code and I am trying to send a string parameter to this QueryAgain() the function below:

function QueryAgain(teammate){
document.getElementById("researcher-name").value=teammate;
document.getElementById("publication-name").value="";
document.getElementById("publication-year").value="";
}

I am sending parameter with this code below:

for(var j=0;j<researcher_teammate[i].length;j++){
  holder=teammate_id_general[i][j];
  holder2=researcher_teammate[i][j];
  div.innerHTML+="<br />"+"<a href='#nav'id='teammate'"+'onclick=QueryAgain(\''+holder2+'\')'+">"+researcher_teammate[i][j]+"</a>"+"<br />";
}

holder variable is an integer value,I can send it to QueryAgain() funciton and it writes the value.When I am trying to send holder2 (which is string variable),it gives me this error below

Uncaught SyntaxError: Invalid or unexpected token (at (index):1:12)

I just want to send this two variable to funciton but I can't even send the string parameter.So I guess I need to learn how to send it.I am doing a Syntax error I guess but I couldn't understand the reason and can't fix it. Here are some codes which I try and didn't work:

I have tried this once:

div.innerHTML+="<br />"+"<a href='#nav'id='teammate'"+'onclick=QueryAgain('+holder2+')'+">"+researcher_teammate[i][j]+"</a>"+"<br />";

And looked for questions on here and found some codes-->This code has taken by this questeion

div.innerHTML+="<br />"+"<a href='#nav'id='teammate'"+'onclick=QueryAgain(\''+holder2+'\')'+">"+researcher_teammate[i] 
[j]+"</a>"+"<br />";

And this code didn't solve the error.What is the reason of error and how can I solve it? I am trying send integer(holder) and string(holder2) value to funciton same time.


Solution

  • Just use a string template literal

    div.innerHTML += `
      <br />
      <a 
        href='#nav'
        id='teammate'
        onclick="QueryAgain('${holder}')">
        ${researcher_teammate[i][j]}
      </a>
      <br />
    `;