Javascript e它通过独立监视其他内容来检测DOM是否准备就绪。对于常规DOM方法,现在不必担心
两个受影响的Javascript e它通过独立监视其他内容来检测DOM是否准备就绪。对于常规DOM方法,现在不必担心,javascript,html,css,Javascript,Html,Css,两个受影响的img标记被解析并转换为DOM元素。所以您知道可以选择它们(使用id属性和DOM文档方法),将它们保存到变量或对象/元素属性,然后。。。鼓轮。。。您还可以访问该元素上的属性和方法,以实现预期的结果 现在,页面已加载,标记已解析,您有一个脚本要在触发onload事件时运行,现在呢?好吧,你来写代码。当鼠标单击您要求特别“处理”的某个元素时,您要执行的操作是: 差不多就是这样。我知道这听起来很难,但你做的次数越多就越容易。您正在尝试的方法有几种(如CodeAddict演示的在DOM中交换
img
标记被解析并转换为DOM元素。所以您知道可以选择它们(使用id
属性和DOM文档方法),将它们保存到变量或对象/元素属性,然后。。。鼓轮。。。您还可以访问该元素上的属性和方法,以实现预期的结果
现在,页面已加载,标记已解析,您有一个脚本要在触发onload
事件时运行,现在呢?好吧,你来写代码。当鼠标单击您要求特别“处理”的某个元素时,您要执行的操作是:
差不多就是这样。我知道这听起来很难,但你做的次数越多就越容易。您正在尝试的方法有几种(如CodeAddict演示的在DOM中交换元素的父标记值),但这是迄今为止最简单的方法,并且具有几乎相同的效果(出于您的目的,相同)
一旦您了解了更多内容,您就可以在代码中动态地查找、检测和操作在元素上或与元素一起执行的事件和其他相关操作,而无需事先了解它们的很多或任何内容
但现在不要担心这个水平。试试这个。然后使用。我将在不为您编写代码的情况下引导您完成它 假设您有两个表,
tableA
和tableB
。它们都有一个tbody
和一个tr
*。
tableA
将只有一个td
单元格tablB将有四个
td`单元
*tr
是一个“表行”,td
是表数据
,因为表的大部分设计都是为了保存数据。
使用方法,您需要在文档对象中查找并选择元素的DOM节点。为此,最简单的方法是在要查找的元素上放置一个id
属性。请记住,id
属性对于页面应该是唯一的(无重复!)。这意味着
和
,
等是img
元素的最终结果
旁注:HTML5允许<代码> ID>代码> s为代码> ID=“1”,但我认为这是一个糟糕的做法,建议不要使用该表单。这是一个原则问题
至此,您应该具有近似于以下内容的表标记:
table
tbody
tr
td
img id="imageLanding"
table
tbody
tr
td
img id="image1"
td
img id="image"
td
img id="image3"
... etc ...
DOM元素具有属性(“属性”的含义稍有不同)和方法。例如,img
元素将有一个src=“…”
属性,在本例中,该属性在img
DOM元素上有一个相应的element.src
属性。属性是在页面加载时提供给解析器的,属性是属性作为DOM节点在元素中的形式。在某些情况下,访问的属性可能不会以您认为的方式更新,这就是为什么会有区别
接下来,花一点时间考虑一下你对事件的描述会发生什么。将向某人提供两个表,并向他们提供在一个表中单击图像的选项,然后功能将用另一个表的一个图像交换单击的图像。粗体文本标识操作发生的所有位置,无论是在设置中还是在执行中。(从它的td
中删除单击的图像,并在删除另一个图像后将其移动到另一个表是另一种方法;我在这里不演示这一点)
所以你必须等“事情”发生后再行动。这个“某物”是一个例子。所有DOM元素都支持某种类型的事件(但并非每种类型的元素都会发生相同的事件),这允许您在发生某些事情时执行某些操作:ONclick
、ONmouseover
、ONmouseout
,等等。这是一个正在发生的事件。考虑:
放学回家后,我吃了一个三明治
注意,如果您使用属性或直接DOM属性来设置带有元素的事件处理程序,则需要将on
附加到每个事件名称中。换句话说,onclick
、onmouseover
和onsubmit
,用于在表单元素提交之前处理表单元素
使用DOM方法(首选onclick=“stuff()”
)实际上意味着:
element.onclick = function(){};`
您看到的函数形式称为变量函数,以这种方式使用时,会将值返回到变量或其左侧的属性。这样做允许您使用变量名和添加的()
调用该函数,即myVar.myFunc()
或如图所示,element.onclick()
请注意,还有另一种(“更好”的程度左右)方法可以将事件“附加”到元素,但我不想用太多的选项来混淆您。您还可以使用函数名(){}
格式来声明,然后使用它的引用,例如element.onclick=name代码>。注意,当我这样做时,不使用()
。否则,您将立即调用函数并将其返回的结果传递给变量。在大多数情况下,你不想这样做
现在,您已经大致了解了这两个表的标记和“事件”的布局。把这两个元素放在一起,我们有五个带有标识符的元素。查找这些元素的DOM方法是:
var img1 = document.getElementById('image1');
如果向其中输入不同的id,则会获得对元素的DOM节点的引用。在这一点上,您可以对它进行操作,从中获取类似属性值的内容,并为其指定一个特殊事件,当事件发生在该元素上时,该事件被告知“处理”该事件。例如:
img2.onclick = function(){
alert('You clicked image ' + this.id);
};
还是传一个福
var img1 = document.getElementById('image1');
img2.onclick = function(){
alert('You clicked image ' + this.id);
};
function alertID(){
alert('You clicked image ' + this.id);
};
img2.onclick = alertID;
<img id="image1" onclick="whyme(this)"/>
function whyme(el){
alert('You clicked image ' + el.id);
};
<img id="image1" onclick="whyme('image1')"/>
function whyme(id){
alert('You clicked image ' + document.getElementById('id').id;
};
window.onload = function(){};
[Function swapImages() is called and executed when mouse is clicked]
Get the imageLanding element reference
With the imageLanding element's reference
Set a variable to be equal to the img tag's src attribute, img.src
Using the clicked element's reference (hopefully this)...
Set the imageLanding's img.sr equal to the clicked element's src attribute
Set the clicked element's this.src = the saved value you put in the variable
return to the awaiting events state
[Function ends]
$('#table1 tr td img').click(function()
{
$(this).clone().appendTo($('#table2 tr td'))
$(this).remove();
})