gpt4 book ai didi

javascript - 仅显示 3 个图像中的 1 个图像,功能使用吗?

转载 作者:行者123 更新时间:2023-12-01 02:25:59 25 4
gpt4 key购买 nike

使用生成表格的函数 showResults () 遇到困难。我想从 3 个图像中选择显示 1 个图像,具体取决于键:值数据是否在“HasPDF”、“HasMobile”或“apponly”之间为 1。所以我尝试使用 if-then-else 语句来筛选 3 种可能性。有什么建议吗?谢谢。一直转来转去..

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<style>
table {
margin: 3px;
}
table th {
font-weight: bold;
cursor: pointer;
}
table th, table td {
padding: 3px;
border: 1px solid #000;
}

</style>
<script>

var arr = [

{
"Inn_ID": "2292522",
"Event_Name": "Jaguars ",
"Event_Date": "2017-11-19 00:00:00",
"ticket_total": "76.0",
"HasPDF": "1",
"HasMobile": "0",
"apponly": "0"
},
{
"Inn_ID": "2292523",
"Event_Name": "Pelicans",
"Event_Date": "2018-01-16 00:00:00",
"ticket_total": "50.0",
"HasPDF": "0",
"HasMobile": "1",
"apponly": "0"
},
{
"Inn_ID": "2292524",
"Event_Name": "Owls",
"Event_Date": "2018-01-16 00:00:00",
"ticket_total": "60.0",
"HasPDF": "0",
"HasMobile": "0",
"apponly": "1"
}

];

$(function() {
$('#headings th').click(function() {
var id = $(this).attr('id');
var asc = (!$(this).attr('asc')); // switch the order, true if not set

// set asc="asc" when sorted in ascending order
$('#headings th').each(function() {
$(this).removeAttr('asc');
});
if (asc) $(this).attr('asc', 'asc');

sortResults(id, asc);
});

showResults();
});

function sortResults(prop, asc) {
arr = arr.sort(function(a, b) {
if (asc) return (a[prop] > b[prop]);
else return (b[prop] > a[prop]);
});
showResults();
}

function image(thisImg) {
var img = document.createElement("IMG");
img.src = thisImg;
document.getElementById('imageDiv').appendChild(img);
}

function showResults () {
var html = '';
for (var e in arr) {
html += '<tr>'
+'<td>'+arr[e].Event_Date+'</td>'
+'<td><a href="https://www.thexx.com/orders/view-invoice/'+arr[e].Inn_ID+'" target="_blank">'+arr[e].Inn_ID+' </a></td>'
+'<td>'+arr[e].ticket_total+'</td>'
+'<td>'+if (arr[e].HasPDF == "1") {
image('pdf.png');
} else if (arr[e].HasMobile == "1"){
image('mobile.jpeg');
} else {image('link.png');}
+'<div id="imageDiv" style="width=20"></div></td>'
+'</tr>';
}
$('#results').html(html);
}

</script>

</head>

<body>

Click on the table headings to sort the results.
<table>
<thead id="headings">
<tr>
<th id="Event_Date">Event Date</th>
<th id="Inn_ID">Inn ID</th>
<th id="ticket_total">Amount</th>
<th id="order">Order Type</th>

</tr>
</thead>
<tbody id="results">
<!-- this will be auto-populated -->
</tbody>
</table>



</body>

</html>

最佳答案

我重写了你的函数,因为有一些警告可能会导致你的代码崩溃。我稍后会解释它们,但首先是代码:

function showResults(arr) {
var html = '';

for (var i = 0; i < arr.length; i++) {
var image = arr[i].hasPDF ? 'pdf.png' : (arr[i].hasMobile ? 'mobile.jpeg' : 'link.png');

html += '<tr>';
html += '<td>' + arr[i].Event_Date + '</td>';
html += '<td>';
html += '<a href="https://www.aceticket.com/orders/view-invoice/' + arr[i].Invoice_ID + '" target="_blank">';
html += arr[i].Invoice_ID;
html += '</a>';
html *= '</td>';
html += '<td>';
html += arr[i].ticket_total;
html += '</td>';
html += '<td>';
html += '<div id="imageDiv" style="width=20">';
html += '<img src="' + image + '" />';
html += '</div>';
html += '</td>';
html += '</tr>';

}

$('#results').html(html);
}

我做的第一件事是构建 HTML 以获得更好的可读性,就像使用纯 HTML 一样。幸运的是,JavaScript 非常“空白友好”,这使得这成为可能。

我做的第二件事是放弃 image() function。此函数文档方法与HTML字符串创建混合在一起。这就是您的代码未按预期运行的原因。

这是一种竞争条件。让我这样解释一下:

  1. 您创建一个包含 HTML 标记的字符串。
  2. 在创建它的过程中,您尝试将 image() 函数中的图像标记附加到 div (也是这个 div仅存在于字符串内部,甚至在调用 image() 函数之后也是如此。)
  3. 使用 jQuery 中的 html() 函数,您最终可以根据在字符串内创建的标记创建 DOM

你的方法并不完全错误,但也有一些缺点。第三步之后,您就可以访问 DOM 并append() 向其中添加一些内容。

image() 函数的替代方法是在字符串中创建一个 img 标记,并向其传递一个保存图像文件名的变量。我使用嵌套的三元运算符来节省一些空间。

希望您喜欢我对您问题的解决方案,如果我可以提供任何帮助,请发表评论! ;)

关于javascript - 仅显示 3 个图像中的 1 个图像,功能使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48800556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com