Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用<;span>;在外部文件中创建的值_Javascript_Html - Fatal编程技术网

Javascript 使用<;span>;在外部文件中创建的值

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

我有两个文件:一个名为simplecart.js的javascript文件,它创建了一个值,该值显示在我的另一个文件(html文件)中的
中。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