Javascript 如何从脚本和指向父节点中获取document.currentscript
当用户滚动页面时,我将在同一个div中附加一个div标记和一个js标记 现在,我指向带有“js_div_1”、“js_div_2”、“js_div_3”等的父标记,加上一些东西 Html格式:Javascript 如何从脚本和指向父节点中获取document.currentscript,javascript,jquery,Javascript,Jquery,当用户滚动页面时,我将在同一个div中附加一个div标记和一个js标记 现在,我指向带有“js_div_1”、“js_div_2”、“js_div_3”等的父标记,加上一些东西 Html格式: <div id="divider" class="long"> <!-- Firt iteration - when document ready--> <div id="js_div_1" > <scrip
<div id="divider" class="long">
<!-- Firt iteration - when document ready-->
<div id="js_div_1" >
<script async="" id="js_file_1" type="text/javascript" src="sample.js"></script>
</div>
</div>
在sample.js文件内容中:
console.log(document.currentScript);
var parentTag = document.currentScript;
parentTag.parentNode.removeChild(parentTag );
parentTag.parentNode.appendChild('Success');
实际输出:(console.log)
console.log(document.currentScript);
var parentTag=document.currentScript;
parentTag.parentNode.removeChild(parentTag);
parentTag.parentNode.appendChild('Success');
预期输出:(需要指向parentNode div'js_div_1'并追加响应)
成功
成功
等
要生成更快的javascript代码,您必须稍微更改Html:
Html代码:
<div id="divider" class="long">
<!-- Firt iteration - when document ready-->
<div id="js_div_1" class="js-div-container" data-iteration="1" >
<script async="" id="js_file_1" class="js-link" type="text/javascript" src="sample.js"></script>
</div>
</div>
这些代码将输出预期的结果。但是我不明白为什么这个脚本sample.js需要多次加载
<script>
console.log(document.currentScript);
var parentTag = document.currentScript;
parentTag.parentNode.removeChild(parentTag );
parentTag.parentNode.appendChild('Success');
</script>
<div id="divider" class="long">
<!-- 1st iteration - when document ready-->
<div id="js_div_1" >
Success
</div>
<!-- 2nd iteration - when document ready-->
<div id="js_div_1" >
Success
</div>
<!-- 3nd iteration -->
etc...
</div>
<div id="divider" class="long">
<!-- Firt iteration - when document ready-->
<div id="js_div_1" class="js-div-container" data-iteration="1" >
<script async="" id="js_file_1" class="js-link" type="text/javascript" src="sample.js"></script>
</div>
</div>
jQuery(document).ready(function($){
$(window).scroll(function(){
var scrollHeight = $(document).height();
var scrollPosition = $(this).height() + $(this).scrollTop();
if ((scrollHeight - scrollPosition) / scrollHeight === 0) {
// when scroll to bottom of the page
var el = $('.js-div-container:last-child');
var iteration = parseInt(el.attr("data-iteration")) + 1;
el.clone().attr({'id': 'js_div_' + iteration, 'data-iteration': iteration}).appendTo('#divider');
el.find('.js-link').attr('id', 'js_file_' + iteration);
}
});
});