javascript 无法显示警报
javascript doesn't work to display alert
我有一个 html 元素,我想在单击 "i" 元素时显示警告。当 div 和 class "innerNotif" 直接放在 DOM 上时,它可以工作,但是当我添加 div 和 socket.on 时,它不起作用工作。我认为这是因为元素在加载时不在DOM中。
<span class="disNone notificationMenuCss" id="notifBar">
<div class="innerNotif" id="idNatif">1<i class="fa fa-times" on-click="removeNotif" aria-hidden="true"></i></div>
</span>
<script>
var socket = io.connect();
var notifId = 0;
socket.on('libCourtLotChangeServ', function(){
var numItems = $('.innerNotif').length +1;
$( "#notifBar" ).append( '<div class="innerNotif" id="id' + notifId +'"><i class="fa fa-times" on-click="removeNotif" aria-hidden="true"></i></div>');
notifId++;
$("#notificationNumber").html(numItems);
});
</script>
<script>
Polymer({
alertNotif: function() {
alert('Test');
}
});
</script>
换行符打断了您要追加的字符串。
这应该有效:
$( "#notifBar" ).append( '<div class="innerNotif" id="id' + notifId + '"><i class="fa fa-times" on-click="removeNotif" aria-hidden="true"></i></div>');
试试我编辑的这段代码。
<span class="disNone notificationMenuCss" id="notifBar">
<div class="innerNotif" id="idNatif">1<i class="fa fa-times" on-click="removeNotif" aria-hidden="true"></i></div>
</span>
<script>
var socket = io.connect();
var notifId = 0;
socket.on('libCourtLotChangeServ', function(){
var numItems = $('.innerNotif').length +1;
$( "#notifBar" ).append( '<div class="innerNotif" id="id' + notifId + '"><i class="fa fa-times" on-click="removeNotif" aria-hidden="true"></i></div>');
notifId++;
$("#notificationNumber").html(numItems);
});
</script>
<script>
Polymer({
alertNotif: function() {
alert('Test');
}
});
</script>
终于找到解决办法了,在父元素上添加一个onclick函数,并在其上添加一个addEventListener
<paper-toolbar class="header" on-click="removeNotif">
<div class="notification" on-click="notificationMenu">
<span class="notificationSpan" id="notificationNumber"></span>
<span class="disNone notificationMenuCss" id="notifBar"></span>
</div>
</paper-toolbar>
<script type="text/javascript">
var socket = io.connect();
var notifId = 0;
socket.on('libCourtLotChangeServ', function(contrat){
var numItems = $('.innerNotif').length +1;
$( "#notifBar" ).append( '<div class="innerNotif" id="id' + notifId +'" style="width: 96%; height: 30px; text-align: left; border: 1px solid black; background-color: white; padding: 3px;">' + 'Le contrat <br>' + contrat + ' a été modifié ' + '<i class="fa fa-times" on-click="removeNotif" aria-hidden="true"></i></div>');
notifId++;
$("#notificationNumber").html(numItems);
});
</script>
<script>
Polymer({
removeNotif: function() {
var idValue = Number(($(".innerNotif:last").attr("id")).replace("id", "0"));
console.log(idValue);
for (var numItemsCheck = 0; numItemsCheck <= idValue; numItemsCheck++){
document.querySelector("#id" + numItemsCheck).addEventListener("click", function(){
var numItems = $('.innerNotif').length -1;
$("#notificationNumber").html(numItems);
this.remove();
})
}
}
});
</script>
我有一个 html 元素,我想在单击 "i" 元素时显示警告。当 div 和 class "innerNotif" 直接放在 DOM 上时,它可以工作,但是当我添加 div 和 socket.on 时,它不起作用工作。我认为这是因为元素在加载时不在DOM中。
<span class="disNone notificationMenuCss" id="notifBar">
<div class="innerNotif" id="idNatif">1<i class="fa fa-times" on-click="removeNotif" aria-hidden="true"></i></div>
</span>
<script>
var socket = io.connect();
var notifId = 0;
socket.on('libCourtLotChangeServ', function(){
var numItems = $('.innerNotif').length +1;
$( "#notifBar" ).append( '<div class="innerNotif" id="id' + notifId +'"><i class="fa fa-times" on-click="removeNotif" aria-hidden="true"></i></div>');
notifId++;
$("#notificationNumber").html(numItems);
});
</script>
<script>
Polymer({
alertNotif: function() {
alert('Test');
}
});
</script>
换行符打断了您要追加的字符串。
这应该有效:
$( "#notifBar" ).append( '<div class="innerNotif" id="id' + notifId + '"><i class="fa fa-times" on-click="removeNotif" aria-hidden="true"></i></div>');
试试我编辑的这段代码。
<span class="disNone notificationMenuCss" id="notifBar">
<div class="innerNotif" id="idNatif">1<i class="fa fa-times" on-click="removeNotif" aria-hidden="true"></i></div>
</span>
<script>
var socket = io.connect();
var notifId = 0;
socket.on('libCourtLotChangeServ', function(){
var numItems = $('.innerNotif').length +1;
$( "#notifBar" ).append( '<div class="innerNotif" id="id' + notifId + '"><i class="fa fa-times" on-click="removeNotif" aria-hidden="true"></i></div>');
notifId++;
$("#notificationNumber").html(numItems);
});
</script>
<script>
Polymer({
alertNotif: function() {
alert('Test');
}
});
</script>
终于找到解决办法了,在父元素上添加一个onclick函数,并在其上添加一个addEventListener
<paper-toolbar class="header" on-click="removeNotif">
<div class="notification" on-click="notificationMenu">
<span class="notificationSpan" id="notificationNumber"></span>
<span class="disNone notificationMenuCss" id="notifBar"></span>
</div>
</paper-toolbar>
<script type="text/javascript">
var socket = io.connect();
var notifId = 0;
socket.on('libCourtLotChangeServ', function(contrat){
var numItems = $('.innerNotif').length +1;
$( "#notifBar" ).append( '<div class="innerNotif" id="id' + notifId +'" style="width: 96%; height: 30px; text-align: left; border: 1px solid black; background-color: white; padding: 3px;">' + 'Le contrat <br>' + contrat + ' a été modifié ' + '<i class="fa fa-times" on-click="removeNotif" aria-hidden="true"></i></div>');
notifId++;
$("#notificationNumber").html(numItems);
});
</script>
<script>
Polymer({
removeNotif: function() {
var idValue = Number(($(".innerNotif:last").attr("id")).replace("id", "0"));
console.log(idValue);
for (var numItemsCheck = 0; numItemsCheck <= idValue; numItemsCheck++){
document.querySelector("#id" + numItemsCheck).addEventListener("click", function(){
var numItems = $('.innerNotif').length -1;
$("#notificationNumber").html(numItems);
this.remove();
})
}
}
});
</script>