我正在尝试添加样式(css),并能够将一些随机生成的数字(%)放置在我想要的任何位置(更具体地讲<div>
中),但是我不知道实现这一目标。
这些数字当前放置在每个列表项的完整末尾(在主<div>
之外,但在<li>
内)。
为清楚起见,以下是其中两个列表项以及如何显示数字的屏幕截图:https://imgur.com/gsGRlaT
当前显示数字的html:
<div>
{% if page_obj.object_list %}
<ol class="row top20" id="my_list">
{% for result in page_obj.object_list %}
<li id="list_item">
<div class="showcase col-sm-6 col-md-4">
<a href="{{ result.object.get_absolute_url }}">
<h3>{{result.object.title}}</h3>
<h5>{{ result.object.destination }}</h5>
<img src="{{ result.object.image }}" class="img-responsive">
</a>
</div>
<!-- Numbers are displayed randomly here --> 90%
<!-- But I'm trying to display them in the div below -->
<div class="numbers"> 90% </div>
</li>
{% endfor %}
</ol>
</div>
{% endif %}
生成数字的Javascript代码:
<script type="text/javascript">
var orderedList = document.getElementById("my_list");
var itemLength = 8; //REPLACE THIS WITH THE LENGTH OF THE ITEM LIST
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
// get a default 100 into the array
var arrayOfNumbers = [100],
listItem = document.getElementById("list_item");
// get itemLength random numbers
for (let i = 0; i < itemLength; i++) {
arrayOfNumbers.push(getRandomInt(30, 100))
}
// sort the array of random numbers
arrayOfNumbers.sort(function(a, b) {
return b - a
})
// now do the lopping and creating elements
for (let i = 0; i < arrayOfNumbers.length; i++) {
let randomInt = document.createTextNode(arrayOfNumbers[i] + "%");
listItem = document.getElementById("list_item");
listItem.appendChild(randomInt);
orderedList.appendChild(listItem);
}
</script>
那么我该如何控制这些数字的放置方式和位置?
答案 0 :(得分:1)
您快要解决了。只是一些小的修改。
在创建文本节点的位置创建一个div
,并将类numbers
添加到创建的div中。您完成了。
for (let i = 0; i < arrayOfNumbers.length; i++) {
let randomIntContainer = document.createElement('div');
randomIntContainer.textContent = arrayOfNumbers[i] + "%";
randomIntContainer.setAttribute('class', 'number');
listItem = document.getElementById("list_item");
listItem.appendChild(randomIntContainer);
orderedList.appendChild(listItem);
}