Я буду добавлять список контактов и поместить их в div на основе первого символа lname. Если div не существует, он будет создан динамически. Я бы хотел отобразить контактную информацию при нажатии на имя. В следующей реализации функция showMe()
не работает для отображения контактной информации.Javascript onClick() не работает
<html>
<head>
<style>
.holder{
background-color:yellow;
margin-top:10px;
width: 300px;
}
.holder span{
background-color: Green;
height:20px;
color:white;
}
</style>
<script>
var contacts =[];
function getInfo() {
var firstName = prompt("Enter first name");
var lastName = prompt("Enter last name");
var emailId = prompt("Enter Email ID");
var phoneNo = prompt("Enter Phone number");
var person ={
fname : firstName,
lname : lastName,
email : emailId,
phone : phoneNo
};
contacts.push(person);
var currPerson = contacts[contacts.length-1]; //take the last pushed object from the array
var lastNameFirstChar = currPerson.lname.charAt(0).toUpperCase();
if(!document.getElementById(lastNameFirstChar + "_holder")){
document.getElementById("mydiv").innerHTML += "<div id='"+lastNameFirstChar+"_holder' class='holder'><span>"+lastNameFirstChar+"</span></br></div>";
}
//document.getElementById(lastNameFirstChar + "_holder").innerHTML += currPerson.fname+" "+currPerson.lname + "<br/>";
document.getElementById(lastNameFirstChar + "_holder").innerHTML += "<span onclick='showMe(" + currPerson.id + ")'>" + currPerson.fname + " " + currPerson.lname + "</span><br/>";
}
function showMe(id) {
alert(id);
var person = contacts[id]; /* currently corresponds to array index, could be a property lookup with underscore or whatever */
var contactInfo = person.fname+" "+person.lname+"</br> "+person.email+"</br>"+person.phone;
target.innerHTML = "<div>" + contactInfo + "</div></br>";
}
</script>
</head>
<body>
<button onclick="getInfo()">Get Person Info</button>
<p>----------------------------</p>
<div id="mydiv">
</div>
</body>
</html>
@ScottMarcus Эта строка вызывает 'документа. getElementById (lastNameFirstChar + "_holder"). innerHTML + = "" + currPerson.fname + "" + currPerson.lname + "
"; ' – Droidr
Это r не всегда лучший способ решить вашу проблему. Вместо встроенных обработчиков событий HTML вы должны использовать element.addEventListener. И вместо того, чтобы использовать JavaScript для написания новых элементов HTML и подключения их, вы должны просто создать элемент либо с помощью document.createElement, либо с его помощью, но просто не отображаться. Тогда JavaScript должен только подключить его к обработчику событий (снова используя addEventListener). –
В ваших лицах нет свойства 'id', а' target' в 'showMe()' is undefined' – Andreas