Ich verwende Datentabellen, um die Werte im Raster anzuzeigen, habe ich Javascript auf Click-Ereignis implementiert, um ein Modal zu öffnen, und auch dieses Modal zeigt alle Werte in der angeklickten Zeile. Jetzt, wo ich auf die Tabellenzeile klicke, öffnet sich das Modal. jetzt will ich das verhindern und es sollte sich beim einklicken einer bestimmten spalte öffnen. Mein Code ist wie folgtJavascript onclick-Ereignis zum Öffnen eines Modells in Datatabellen
(function() {
if (window.addEventListener) {
window.addEventListener('load', run, false);
} else if (window.attachEvent) {
window.attachEvent('onload', run);
}
function run() {
var t = document.getElementById('myTable');
t.onclick = function(event) {
$('#modal2').modal();
event = event || window.event; //IE8
var target = event.target || event.srcElement;
while (target && target.nodeName != 'TR') { // find TR
target = target.parentElement;
}
//if (!target) { return; } //tr should be always found
var cells = target.cells; //cell collection - https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement
//var cells = target.getElementsByTagName('td'); //alternative
if (!cells.length || target.parentNode.nodeName == 'THEAD') {
return;
}
var f1 = document.getElementById('prdctid');
var f2 = document.getElementById('prdctname');
var f3 = document.getElementById('prdctmodel');
var f4 = document.getElementById('prdctversion');
var f5 = document.getElementById('prdctlanguage');
f1.value = cells[1].innerHTML;
f2.value = cells[2].innerHTML;
f3.value = cells[3].innerHTML;
f4.value = cells[4].innerHTML;
f5.value = cells[5].innerHTML;
//console.log(target.nodeName, event);
});
}
})();
Ich habe den folgenden Code versucht es funktioniert nur für die erste Zeile.
(function() {
if (window.addEventListener) {
window.addEventListener('load', run, false);
} else if (window.attachEvent) {
window.attachEvent('onload', run);
}
function run() {
// var t = document.getElementById('myTable');
// t.onclick = function(event) {
$('#myTable').on('click', 'tr td:eq(4)', function(event) {
$('#modal2').modal();
event = event || window.event; //IE8
var target = event.target || event.srcElement;
while (target && target.nodeName != 'TR') { // find TR
target = target.parentElement;
}
//if (!target) { return; } //tr should be always found
var cells = target.cells; //cell collection - https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement
//var cells = target.getElementsByTagName('td'); //alternative
if (!cells.length || target.parentNode.nodeName == 'THEAD') {
return;
}
var f1 = document.getElementById('prdctid');
var f2 = document.getElementById('prdctname');
var f3 = document.getElementById('prdctmodel');
var f4 = document.getElementById('prdctversion');
var f5 = document.getElementById('prdctlanguage');
f1.value = cells[1].innerHTML;
f2.value = cells[2].innerHTML;
f3.value = cells[3].innerHTML;
f4.value = cells[4].innerHTML;
f5.value = cells[5].innerHTML;
//console.log(target.nodeName, event);
});
}
})();
Ich würde empfehlen, offensichtlicher Variablennamen zu verwenden. 'f1' bis' f7' sind wirklich schlechte Variablennamen. – pduersteler
Das ist OK, ich werde die Variablennamen ändern, aber Funktionalität? – Manoj