Javascript 使用<;span>;在外部文件中创建的值
我有两个文件:一个名为simplecart.js的javascript文件,它创建了一个值,该值显示在我的另一个文件(html文件)中的Javascript 使用<;span>;在外部文件中创建的值,javascript,html,Javascript,Html,我有两个文件:一个名为simplecart.js的javascript文件,它创建了一个值,该值显示在我的另一个文件(html文件)中的中。html文件包含以下代码: <span id="quantity" class="simpleCart_quantity"></span> <span id="quantityText"></span> <script type="text/javascript"> var quant
中。html文件包含以下代码:
<span id="quantity" class="simpleCart_quantity"></span>
<span id="quantityText"></span>
<script type="text/javascript">
var quantity = document.getElementById("quantity"),
quantityText = document.getElementById("quantityText");
if (parseInt(quantity.innerHTML, 10) === 1) {
quantityText.innerHTML = "article";
} else {
quantityText.innerHTML = "articles";
}
</script>
var数量=document.getElementById(“数量”),
quantityText=document.getElementById(“quantityText”);
if(parseInt(quantity.innerHTML,10)==1){
quantityText.innerHTML=“article”;
}否则{
quantityText.innerHTML=“文章”;
}
问题是:
代码似乎无法获取
之间的值(请记住,该值是在外部文件simplecart.js中创建的),现在alwasy显示“articles”,因为它看不到该值是否为“1”
我希望有人能帮我解决这个问题,
非常感谢 根据simplecart.js文件的外观,html文件中的javascript代码很可能运行得太早(在文档实际准备就绪之前)。 您应该延迟任何DOM操作,例如使用(或使用jquery): 最好使用绑定库(如Angular.js),但您可以定期更新字段作为快速解决方案:
var updatePlural = function () {
var quantity = document .......
}
setInterval(updatePlural, 250); // every 250ms
您需要延迟运行JS,直到用数据填充span的JS运行之后 由于脚本元素紧跟在它后面,它将立即提取值。没有更好的方法确保其他JS不会先运行
如何将JS延迟到最佳时间的细节取决于simplecart.JS中的相关代码何时运行,调试时,
parseInt(quantity.innerHTML,10)
返回什么?我认为这就是问题所在,在加载完页面的其余部分后,我如何才能运行此代码?(或者实际上,在包含的simplecart.js文件将值加载到标记中之后?)我更新了一个建议(虽然不是很干净,因为它进行了主动监视)。
var updatePlural = function () {
var quantity = document .......
}
setInterval(updatePlural, 250); // every 250ms