使用 jQuery 和 Javascript 初始化多个 html 元素
Initialize more than one html element using jQuery and Javascript
我试图引导我的html元素触发我自定义的JS文件的方法。
第三个文本区域看起来很好。
第一个和第二个文本区域不会影响我尝试在 myJSFile.js 文件中更改的任何设置。
这是我的问题:js文件很好地加载了最后一个文本区域,但无法使用我的js方法正确初始化以前的文本区域。
我的JS文件做错了,如果您帮助我,我将不胜感激。
PS :启动一些插件并在 CKEditor 上工作。
这是我的 HTML 文件:
<textarea id="myTextAreaID" name="myTextArea"></textarea>
<script type="text/javascript" src="../public/js/myJSFile.js"onload="setTextAreaValues('myTextAreaID')"></script>
<textarea id="myTextAreaID2" name="myTextArea2"></textarea>
<script type="text/javascript" src="../public/js/myJSFile.js"onload="setTextAreaValues('myTextAreaID2')"></script>
<textarea id="myTextAreaID3" name="myTextArea3"></textarea>
<script type="text/javascript" src="../public/js/myJSFile.js"onload="setTextAreaValues('myTextAreaID3')"></script>
这是 myJSFile.js 文件
var textAreaID;
$(function(){
var myTextArea = $('#'+textAreaID);
//something is being loaded here, and it is loaded fine.
});
function setTextAreaParameters(param){
textAreaID = param;
}
提前谢谢。
这样做不是个好主意,但是理解为什么会发生这种情况很有趣。在下面的代码中,您将定义全局变量textAreaID
:
var textAreaID;
$(function() {
var myTextArea = $('#' + textAreaID);
//something is being loaded here, and it is loaded fine.
});
function setTextAreaParameters(param) {
textAreaID = param;
}
此脚本在文档中注入三次。在最后一个script
标签之后,textAreaID
变量的值将被myTextAreaID3
,因为它是全局的,最后一个setTextAreaParameters
调用将覆盖上一个。请记住,脚本在您的情况下是同步加载的(没有异步或延迟属性),这意味着onload
回调不会等待并立即将textAreaID
设置为新值。
但是DOMContentLoaded
事件尚未触发。这是您使用此代码订阅的事件:
$(function() {
// DOMContentLoaded
});
当它最终发生时 - 只会处理第三个文本区域 - ID 为 myTextAreaID3
的文本区域。
更好的方法是只有一个脚本标签,并将文本区域设置为相同的类名属性:
<textarea id="myTextAreaID2" name="myTextArea2" class="editor"></textarea>
然后在脚本中可能有某种映射,其中包含每个单独文本区域的配置参数。
您包含相同的脚本三次,但浏览器可能足够智能,只能加载一次(没有理由在同一页面上多次加载相同的脚本)。
你需要做的是只包含一次脚本,比如在 body 标签的末尾之前
...
<script type="text/javascript" src="../public/js/myJSFile.js"></script>
</body>
然后在 JS 文件中,等待文档加载,并相应地处理所有文本区域:
$(function() {
$('textarea').each(function(i, j) {
console.log('do something for the ' + i + 'th text area');
});
})
- 如何设置html元素填充的动画
- 删除对HTML元素的拖动
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 如何使用JQuery在Javascript中转换字符串中的HTML元素
- 一个html元素的克隆次数太多
- 使用AngularJS Directive WHITOUT$scope创建一个动态html元素
- 为什么我在Internet Explorer上看不到html元素
- 重新排列HTML元素的顺序并更改内容
- 使用.on动态添加jquery/js不知道的html元素
- 如果类不是一个选项,如何在使用 jQuery 时控制(避免)嵌套 html 元素的样式
- 如何将html元素添加到tampermonkey中
- 访问html元素值javascript
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- 自定义HTML元素属性未显示-Web组件
- 让HTML元素充当停止滚动的锚点
- 将html元素插入到文本字符串中,以匹配另一个html字符串
- 替换HTML元素中的字符
- 如何将html元素添加为生成的内容
- 如何使用JavaScript在没有html dom的情况下隐藏html元素
- 使用JS加载HTML元素