我做asp.net 很讨厌js.
语句乱七八糟,难以理解。没有智能提示。
但是现在发现很多好的用户体验的项目 都要用到JS,我也看了一些源码。有个体会,感觉js很难学。不知道如何下手,ide没有智能提示,看一些开源的项目,但自己做起来的时候,又不知道如何去写。我想问下高手 ,JS该怎么学???3Q
语句乱七八糟,难以理解。没有智能提示。
但是现在发现很多好的用户体验的项目 都要用到JS,我也看了一些源码。有个体会,感觉js很难学。不知道如何下手,ide没有智能提示,看一些开源的项目,但自己做起来的时候,又不知道如何去写。我想问下高手 ,JS该怎么学???3Q
同意!
如果你永远觉得它垃圾你就永远用不好。调javascript是很好玩的!
也能实现很多无聊的功能。
javascript是真正为用户写的语言,要好好对待
就看个 拖拽的脚本 看了我快3天了 还没看懂。我都觉得耽误时间。
一条语句几个属性,方法都要查半天
属性,方法 不知道什么意思。总的上网查,有的网上还不好查出来。效率太慢了。
比如: var evt = e || window.event;
var evtTarget = evt.target || evt.srcElement; evt.target 和evt.srcElement 着两个属性 是什么意思啊????
VB的可能性大点建议先把基础看下在去看代码 比如 变量,运算符,条件语句之类的
target window名
srcElement 设置或获取触发事件的对象。不过说实在的你拿这么个javascript源码上手确实有点问题!
对于新手来说太难了
你可以上网找个
DHTML 手册
chm格式的,应该能解决你一些问题
var evtTarget = evt.target || evt.srcElement;
这段话的意思是当有事件触发的时候取得触发事件的对象
比如把页面内一个输入框的内容改了,就能通过这段定位到这个输入框
js变量 运算符 条件语句 我看了 也就那么一点东西。正是因为太简单了,下来写起来才麻烦。
实际项目里 属性 方法就多了就不知道什么意思了。而且我有个问题 没有智能提示,是不是要把每个属性都记住才行???
一有事件 这条语句就执行???
var clone = null;
var totalPurchase = 0.0;
var dropZoneArray = new Array(1);
dropZoneArray[0] = "dZone";
var titlePattern = ".+_lblTitle$"
var pricePattern = ".+_lblPrice$"
var dragElementPattern = ".+_a$";var uniqueNumber = 1; function ResetColor()
{
document.getElementById("dZone").className = 'DefaultDropZoneColor';
}function IsInDropZone(evtTarget)
{
var result = false;
// iterate through the array and find it the id exists
for(i = 0; i < dropZoneArray.length; i++)
{
if(evtTarget.id == dropZoneArray[i])
{
result = true;
break;
}
}
return result;
}function MakeElementDraggable(obj)
{
var startX = 0;
var startY = 0;
function InitiateDrag(e)
{
mouseState = 'down';
var evt = e || window.event;
startX = parseInt(evt.clientX);
startY = parseInt(evt.clientY);
clone = obj.cloneNode(true);
clone.style.position = 'absolute';
clone.style.top = parseInt(startY) + 'px';
clone.style.left = parseInt(startX) + 'px';
document.body.appendChild(clone);
document.onmousemove = Drag;
document.onmouseup = Drop;
return false;
}function Drop(e)
{
var evt = e || window.event;
var evtTarget = evt.target || evt.srcElement;
var dZone = document.getElementById("dZone");
if( evt.clientX > dZone.offsetLeft && evt.clientX < (dZone.offsetLeft + dZone.offsetWidth)
&& evt.clientY > dZone.offsetTop && evt.clientY < (dZone.offsetTop + dZone.offsetHeight))
{
AddPrice();
}
document.onmouseup = null;
document.onmousemove = null;
document.body.removeChild(clone);
mouseState = 'up';
ResetColor();
}function AddPrice()
{
var title = GetProductTitle();
var price = GetProductPrice();
var dZone = document.getElementById("dZone");
var textNode = document.createTextNode(title);
var priceNode = document.createTextNode(price);
var spaceNode = document.createTextNode(': $');
var paragraphElement = document.createElement('p');
// create the delete button
var deleteButton = document.createElement('button');
deleteButton.value = 'Delete';
deleteButton.innerHTML = 'Delete';
deleteButton.onclick = DeleteItem;
var item = document.createElement('div');
item.id = 'itemDiv' + uniqueNumber;
item.appendChild(paragraphElement);
item.appendChild(textNode);
item.appendChild(spaceNode);
item.appendChild(priceNode);
item.appendChild(spaceNode);
item.appendChild(deleteButton);
dZone.appendChild(item);
// increment the price
IncrementTotal(price);
uniqueNumber++;
}function DeleteItem(e)
{
var evt = e || window.event;
var evtTarget = evt.target || evt.srcElement;
if(IsFireFox())
{
price = evtTarget.parentNode.childNodes[2].nodeValue;
evtTarget.parentNode.parentNode.removeChild(evtTarget.parentNode);
}
else
{
price = evtTarget.parentElement.childNodes[2].nodeValue;
evtTarget.parentElement.parentElement.removeChild(evtTarget.parentElement);
}
DecrementTotal(price);
}function DecrementTotal(price)
{
totalPurchase -= Math.ceil(Number(price));
document.getElementById("divTotal").innerHTML = totalPurchase;
}function IncrementTotal(price)
{
totalPurchase += Math.ceil(Number(price));
document.getElementById("divTotal").innerHTML = totalPurchase;
}function GetProductPrice()
{
var price = '';
if(IsFireFox()) {
price = (clone.childNodes[3].innerHTML);
}
else price = (clone.childNodes[2].innerHTML);
return price;
}function GetProductTitle()
{
var title = '';
if(IsFireFox())
{
title = clone.childNodes[1].innerHTML;
}
else { title = clone.childNodes[0].innerHTML; }
return title;
}function IsFireFox()
{
if(navigator.appName == 'Netscape')
return true;
else return false;
}
function Drag(e)
{
if(mouseState == 'down') {
// only drag when the mouse is down
var evt = e || window.event;
var evtTarget = evt.target || evt.srcElement;
clone.style.top = evt.clientY + 'px';
clone.style.left = evt.clientX + 'px';
// Check if we are in the drop Zone
if(IsInDropZone(evtTarget))
{
evtTarget.className = 'highlightDropZone';
}
else
{
ResetColor();
}
}
}obj.onmousedown = InitiateDrag;}function IsMatch(id, pattern)
{
var regularExpresssion = new RegExp(pattern);
if(id.match(regularExpresssion)) return true;
else return false;
}var divElements = document.getElementsByTagName("div"); for(i=0;i<divElements.length;i++)
{
if(IsMatch(divElements[i].id, dragElementPattern))
{
MakeElementDraggable(divElements[i]);
}
}
</script>
我没看到有哪调用这个函数了···
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
<div id="dZone" style="position:absolute;top:295px; left:526px; width:300px; overflow:auto; height:300px" class="DefaultDropZoneColor">
Shopping Cart
Total: $ <div class="totalBox" id="divTotal">0.00</div>
</div>
<asp:DataList Height="100%" Width="100%" ID="dlToys" runat="server" RepeatColumns="3" CellPadding="20" CellSpacing="20">
<ItemTemplate>
<div ID="a" runat = "server" class="dragElement">
<asp:Label ID="lblTitle" runat="server" Text='<%# Eval("Title") %>' />
<asp:Label ID="lblPrice" runat="server" Text = '<%# Eval("Price") %>' />
<asp:Image ID="imgPicture" runat="server" ImageUrl='<%# Eval("ImageUrl") %>' />
</div>
</ItemTemplate>
</asp:DataList>
</div>
</form>
</body>
</html>
如果是 ie那 evt=window.event
大概应该是这样吧 function **(e){
…
var evt = e || window.event;
…
}运行一下下面这个代码就明白了
<script type="text/javascript">
alert(0 || 1); //输出1
</script>
比如Drop()。一般的写法中调用方法是Drop(this)就是说通过参数把操作的对象传到函数当中。但是这个处理是不用传参数,通过调用Drop()函数是内部自己判断是对哪个对象进行操作。
从而对有事件的对象进行操作。
肯定不是"一有事件 这条语句就执行"
是调用函数时判断操作对象的用途。
不知道我说明白没有
JAVASCRIPT并不是没有办法调试,只不过没有象ASP.Net那样的步进方式调试
如果你用过ASP的话就应该知道中断。你可以手动在JAVASCRIPT当中加入一些alert();
来中断JAVASCRIPT代码的执行,从而了解JAVASCRIPT运行的流程
上网找个"DHTML 手册"吧,对于现在的你来说太有用了
"就是 IE和Mozilla在ECMAScript上兼容的问题"
谢谢!给我上了一课to loverain9999(屁狐狸)
个人感觉你贴的这些代码写的很赏心悦目
很规范,呵呵~~
具体哪里调用了可以打开网页后看一下源文件
比如程序是由算法和数据构成的...那对 WEB 来说HTML 就是数据, JS 就是算法...
因此你最好学好这个....
学习javascript我也是经历n多的磕磕绊绊,感觉最难的地方就是找不到一本完整的参考手册,因为工作的需要还是不得接触javascript,直到有一天,我在网上下载到了一本书,书名是:Oreilly.JavaScript.Pocket.Reference.2nd.Edition.iNT.eBook-LiB.chm,然后有一种豁然开朗的感觉(全英文的,俺在金山词霸的帮助下阅读的非常辛苦)。还有就是一本叫做DHTML手册的咚咚,客户端的javascript参考里面都有!
还有安装一个firefox对于调试javascript很有帮助!
还有 w3c DOM 的学习也是非常的必要!
能把你说的那个 Oreilly.JavaScript.Pocket.Reference.2nd.Edition.iNT.eBook-LiB.chm
给我一份么???谁有也请传我一个 谢谢了。。