目前,Uncaught TypeError: Cannot read properties of undefined (reading 'split')當我單擊時出現錯誤并且它不顯示新視窗。此錯誤僅在我開始在 Microsoft Edge 中使用我們的網站時引起。在此之前,我們在 IE11 中使用。但目前,IE11 正在關閉,因此嘗試開始在 Edge 中使用并導致該錯誤。我可以知道如何解決嗎?在以前,它在 IE11 中運行良好并且不會導致錯誤。
var newWindow;
function openBreakdown(x){
// alert('kpi breakdown is not yet complete.');
var data = x.split('|');
var mnth = data[0]; //corresponding month, january starts at 7 onwards...
var typx = data[1]; //type of report downtime %, mttr, mtbi, longdown etc...
var rprt = data[2]; //type of report duration (y, q, m, w)...
// alert(typx);
if(typx == 'tldw'){
newWindow = window.open("kpi_breakdown.php?month=" mnth "&type=" typx "&rprt=" rprt, "_blank", "location=no, toolbar=no, scrollbars=yes, resizable=yes, top=80, left=310, width=450, height=800");
} else {
newWindow = window.open("kpi_breakdown.php?month=" mnth "&type=" typx "&rprt=" rprt, "_blank", "location=no, toolbar=no, scrollbars=yes, resizable=yes, top=80, left=310, width=900, height=800");
}
}
以上代碼是 JavaScript 代碼。錯誤導致x.split("|")在線。
if(($y >= 32 || $y >= $endLast) && $x < $endRowColorCoding){
//echo "<td>";
//onClick='openBreakdown(this.value);'
echo "<td class='bdata$sub' id='trgt$t' value='$year$mnth|$varname[$x]|$rprt' onClick='openBreakdown(this.value);' title='$year$mnth|$varname[$x]|$rprt'>";
echo "<td class='data$sub' id='trgt$t' onClick='openBreakdown(this.dataset.value);' data-value='$year$mnth|$varname[$x]|$rprt' title='$year$mnth|$varname[$x]|$rprt'>";
echo $val[$y][$x];
$csv .= $val[$y][$x].",";
// if($y == 0 || $y == 4 || $y == 5 || $y == 9 || $y == 21 || $reportDuration[$y] == 'qtd' || $reportDuration[$y] == 'mtd'){ $csv .= ","; }
if($y == 0 || $y == 4 || $y == 5 || $y == 9 || $y == 10 || $y == 14 || $y == 15 || $y == 31 || $y == 19 || $y == 45 || $reportDuration[$y] == 'qtd' || $reportDuration[$y] == 'mtd'){ $csv .= ","; }
echo "</td>";
uj5u.com熱心網友回復:
HTMLTableCellElement沒有value屬性,因此this.value在您的屬性onClick中將是undefined.
如果您需要附加到元素的任意值,我建議使用data attributes。
例如,用 替換value屬性data-value并使用 訪問資料this.dataset.value。
echo "<td
class='data$sub'
id='trgt$t'
onclick='openBreakdown(this.dataset.value);'
data-value='$year$mnth|$varname[$x]|$rprt'
title='$year$mnth|$varname[$x]|$rprt'
>";
uj5u.com熱心網友回復:
value 屬性僅用于輸入欄位,<td>標簽沒有,您可以將事件物件發送到函式,函式從事件物件獲取 td 的文本內容。像這樣
var newWindow;
function openBreakdown(event){
let x = event.target.textContent
// alert('kpi breakdown is not yet complete.');
var data = x.split('|');
var mnth = data[0]; //corresponding month, january starts at 7 onwards...
var typx = data[1]; //type of report downtime %, mttr, mtbi, longdown etc...
var rprt = data[2]; //type of report duration (y, q, m, w)...
// alert(typx);
if(typx == 'tldw'){
newWindow = window.open("kpi_breakdown.php?month=" mnth "&type=" typx "&rprt=" rprt, "_blank", "location=no, toolbar=no, scrollbars=yes, resizable=yes, top=80, left=310, width=450, height=800");
} else {
newWindow = window.open("kpi_breakdown.php?month=" mnth "&type=" typx "&rprt=" rprt, "_blank", "location=no, toolbar=no, scrollbars=yes, resizable=yes, top=80, left=310, width=900, height=800");
}
}
發送事件物件時應該用eventhtml 撰寫。
echo "<td
class='data$sub'
id='trgt$t'
onclick='openBreakdown(event);'
title='$year$mnth|$varname[$x]|$rprt'
>";
試試這個它應該作業
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/487209.html
標籤:javascript php html
