日期:2014-05-16  浏览次数:20368 次

外部JS文件的id/class/元素的选择问题
本帖最后由 unevil 于 2013-07-18 01:44:34 编辑
新手在学习Javascript中,因为CSS的关系,习惯把JS写在外部文件中,这样代码比较清爽.但是遇到了两个问题,所以来请教大家.
1,加载顺序问题,script1.js中第一句修改p元素显示日期,可是只有加载js文件的语句写在id=p1的标签后才会显示时间.我已经使用window.onload.照现在这样写,就无法显示.
2,让我很困扰的问题,我如何在一个js文件中写整个html的js代码(如何控制选择器)?比如下面的,我如何指定js文件中的Draw()在id=canvas1的canvas中画线?没有像CSS选择器那样.#指定id和class的吗?jQuery好像可以,但是还没有看到那,不知道现阶段是否可以解决?有触发事件的还好,直接写function就可以.但是没有触发条件的,直接修改元素的,怎么指定呢?

谢谢

如下HTML代码:

<!DOCTYPE html><meta charset=utf-8>
<script src="script1.js"></script>
<div class="twodiv">
<p id= "p1"></p>
</div>
<h2>标题</h2>
<p>段落。</p>
<button>点击</button>
<canvas id="canvas1"></canvas>



window.onload=document.getElementById("p1").innerHTML=Date();
function draw(){
....
...
}
JavaScript HTML5

------解决方案--------------------
window.onload 应该赋值应该函数。
你这样,是把 Date() 值赋给他了。

window.onload=function(){
// 在这里写你的逻辑代码
};
------解决方案--------------------
第二个不理解。。。
你的意思该不会是$("#canvas1")选择器吧?
------解决方案--------------------
引用:
谢谢大家,这么看来第一个问题也就和第二个一样了.我怎么自由指定我想修改的元素/id/class呢,就像三楼朋友说的一样,但是这运用了jQuery(我还没学到那).现阶段js本身可以实现像CSS选择器那样方便的指定想修改的元素吗?

比如,我写一个应该是错误的js代码,仅仅是表达一下意思,可能比较好说明我的问题:
.p1 window.onload=function(){
...
}
.canvas1 function draw(){
...
}
这样我就可以使用一个js文件来管理整个HTML的js了.而不用一个元素下跟一段js代码.

麻烦大家了.指导一下.

PS:第一个问题的写法确实可以执行,可以正常修改p1元素显示时间.....但是必须写在id="p1"的元素后面才可以,像我那样写在最开头,就不行.


1.js是不存在这样的用法的,js和DOM的结合才实现了html元素操作,多了解下dom和js的基础知识吧。
2.放在开头,当js加载执行的时候,这时候虽然是对p进行操作,但是因为整个文档才加载到js部分,下面的body以及body中的任何内容(如p)都还没有加载,所以这时候p是不存在的,所以对P的操作是无效的,所以不是没有执行,而是无效的执行。