javascript - 如何让这个 Javascript 将我的背景更改为这个 URL?
问题描述
我正在尝试这样做,以便当您刷新页面时它会生成一个随机数并设置背景,但它不会改变背景。有什么建议么?
<!doctype HTML>
<script>var targetUrl = "http://c0d3.attorney/_0.php?m=";
var input = Math.floor(Math.random() * 1000000) + 1;
var imageURL = targetUrl + input
document.getElementById("p1").style.backgroundImage = 'url("'+ imageURL + '")';
</script>
<body>
<p id="p1">
hi
</p>
</body>
<footer></footer>
解决方案
脚本本身很好,但问题在于它何时执行。它试图在元素存在于 DOM 之前获取它。
一个简单的解决方案是将脚本放在正文的末尾,当所需的元素准备好时。另一种方法是让文档让您知道它何时准备就绪,然后您将运行您的脚本。有关更多信息,请参阅此答案:纯 JavaScript 等效于 jQuery 的 $.ready() - 如何在页面/DOM 准备就绪时调用函数
同样作为 javascript 开发的一般规则,所有主要浏览器中可用的开发人员工具都是您的朋友。
查看 chrome 开发工具中的控制台,您会看到:
未捕获的类型错误:无法在(索引)处读取 null 的属性“样式”:5
哪个提示document.getElementById("p1")
返回 null,换句话说,没有找到id p1的元素。
此外,如果您打算实际设置站点的完整背景,那么您实际上需要将其设置为站点的主体。就像您使用 CSS 一样。
document.body.style.backgroundImage = 'url("' + imageURL + '")';
推荐阅读
- codenameone - 将值选择到下拉列表后,表单向下滚动
- python - 使用公司代理后面的 python 脚本下载文件
- ionic-framework - 离子布局中网格的中心行
- javascript - 将输入值与数组元素相关联
- charts - Flutter Charts - 在折线图上着色和添加轴
- sql-server - 使用 sp_prepare 时有没有办法排除元数据列结果
- c# - 如何实现基于密码流的 IdentityServer4 SSO?
- stripe-payments - Stripe,是否可以通过 tax_id 搜索客户?
- c# - 使用 C# 在列表项中搜索
- prolog - 如何根据另一个列表中另一个元素的索引从列表中写出一个元素?