今天发现一个莫名其妙的问题。我有这样一段代码:
<script language="javascript" src="<%=request.getContextPath()%>/scripts/formValidate.js"></script>
<script language="javascript" src="<%=request.getContextPath()%>/scripts/jquery-1.3.1.js"</script> <%
String pageState = request.getParameter("pageState");
if(pageState == null || "".equals(pageState)) {
pageState = "add";
}
%>
<!--------------位置1--------------->
<script type="text/javascript">
$(document).ready(function(){
alert("on load");
});
</script>
<!--------------位置1结束-------------------->
<script language="javascript">
........javascript略..........
<script>
<!----------位置2---------------><!----------位置2结束----------->
<body></body>问题:位置1的代码不会执行alert("on load")语句,而将位置1的代码剪切至位置2就能顺利执行,谁知道是怎么回事儿?
解答一下!(第一个正解的给全分)
<script language="javascript" src="<%=request.getContextPath()%>/scripts/formValidate.js"></script>
<script language="javascript" src="<%=request.getContextPath()%>/scripts/jquery-1.3.1.js"</script> <%
String pageState = request.getParameter("pageState");
if(pageState == null || "".equals(pageState)) {
pageState = "add";
}
%>
<!--------------位置1--------------->
<script type="text/javascript">
$(document).ready(function(){
alert("on load");
});
</script>
<!--------------位置1结束-------------------->
<script language="javascript">
........javascript略..........
<script>
<!----------位置2---------------><!----------位置2结束----------->
<body></body>问题:位置1的代码不会执行alert("on load")语句,而将位置1的代码剪切至位置2就能顺利执行,谁知道是怎么回事儿?
解答一下!(第一个正解的给全分)
alert("on load");
});
表示页面完全载入完成后执行可能是页面还有没有载入完成的元素
ready远比onload早发生。我想了解下你的位置2里发生了什么~~~!
<script language="javascript">
........javascript略..........//这段进行了什么操作?
<script>
<!----------位置2--------------->jquery对象和dom对象的相互转换:
$(".class") $(".class")[0] //前者是jquery对象,只能用jquery的方法,后者为dom对象,只可以用dom中的方法
<script language="javascript">
function checkForm(obj) {
isNotEmpty(obj["tick.tickName"],"蜱属名称不能为空!");
return checkAll();
}
//保存
var imgSize = 1024 * 1024; //最大100K
function save(obj){
var vectorTable = document.getElementById("tickTable");
var available = 0;
var arr = vectorTable.rows;
var length = arr.length-2;
if(length >= 6) {
alert("最多只能添加5张图片");
return false;
} else if(length == 0) {
//什么都不做,保证每图片添加时也能保存
}else if(length>0 && length<=5) {
for(var n=0; n<length; n++) {
var file = document.getElementsByName("vectorFile")[n];
if(file.value != "") {
var val = file.value;
if(/^.*?\.(gif|png|jpg|JPG|JPEG|jpeg|bmp)$/.test(val)){
} else {
alert("只能上传gif, png, jpg, bmp格式的图片");
return false;
} var image = new Image();
image.onreadystatechange = function(){
if(image.readyState == "complete"){
if(image.fileSize <=0 || image.fileSize > imgSize) {
m = n + 1;
alert("第"+m+"张图片当前文件大小" + image.fileSize / 1024 + "KB, 超出最大限制 " + imgSize / 1024 + "KB");
available = 1;
} else {
available = 0;
}
}
} image.src = val;
}else {
alert("请选择上传的文件!");
return false;
}
}
}
if(available == 1) {
return false;
}
document.vectorTick.action="tick_addParentSubmit.ac";
}
//修改
function edit(obj){
document.vectorTick.action="tick_edtParentSubmit.ac";
}
//查看图片
function viewImage(){
document.location.href="<c:url value='/vector/tick/tick_viewImage.ac?tickId=${tickId}'/>";
}
//修改图片
function editImage(){
var tickId=document.all["tick.tickId"].value;
document.vectorTick.action="tick_edtImage.ac?tickId="+tickId;
}
//用于增加图片时在table中增加新的一行
var i = 0;
function addRow() { i = i + 1;
//如果上传图片多于5个,则提示友好信息
if(i != 6) {
var vectorTable = document.getElementById("tickTable");
//在表中增加一行
var tr = vectorTable.insertRow();
//在行中增加两个td,分别在两个td中增加一个input file, img, 并设置tr, td, file, img的属性
var td = document.createElement('td');
td.setAttribute('className', 'blue');
td.setAttribute('align', 'right');
td.setAttribute('colspan', '1'); var td1 = document.createElement('td');
td1.setAttribute('align', 'left');
td1.setAttribute('colspan', '1');
var inputtext = document.createElement("<INPUT name='vectorFile'>");
inputtext.setAttribute('type', 'file');
inputtext.setAttribute('id', 'upload'+i); var button = document.createElement('button');
button.setAttribute('value', '删除');
button.setAttribute('className', 'brn_hui');
var img = document.createElement('img');
img.setAttribute('id', 'pic'+i);
img.setAttribute('height', '200');
img.setAttribute('width', '200');
img.style.setAttribute('display', 'none'); var tr1 = document.createElement('tr');
tr1.setAttribute('id', 'dname'+i);
tr1.style.setAttribute('display', 'none');
var td2 = document.createElement("<INPUT name='nameImage'>");
var td3 = document.createElement("<INPUT name='description'>");
td.appendChild(inputtext);
td.appendChild(button);
td1.appendChild(img);
td1.appendChild(tr1);
td1.appendChild(td2);
td1.appendChild(td3);
td2.outerText = "图片名称:";
tr.appendChild(td);
tr.appendChild(td1);
button.onclick = function(){
var n=this.parentNode.parentNode.rowIndex
vectorTable.deleteRow(n)
i=i-1;
setaddImgBtnState();
};
setaddImgBtnState();
}
}
function setaddImgBtnState(){
if(i>=5){
document.getElementById("addImgBtnSpan").style.display="none";
}else{
document.getElementById("addImgBtnSpan").style.display="block";
}
}
</script>
........javascript略..........
<script>
这里也定义了一个ready事件吧jq的覆盖了?
$与JQuery有冲突,所以不执行。在JQuery语句前加上这样的语句:var jQuery = jQuery.noConflict();
并将后面的$用jQuery代替,应该就可以了,试试看!Good Luck!