取一个<div>的innerHTML与一个字符串比较,alert出的innerHTML跟字符串相等,为什么程序判断总是不相等。

取一个<div>的innerHTML与一个字符串比较,alert出的innerHTML跟字符串相等,为什么程序判断总是不相等。,第1张

var abc = "<a href=''>aaa</a>";

divinnerHTML = abc;

alert(divinnerHTML == abc); // 注意:这种情况下,alert出来的,依然可能是false

因为浏览器在赋值时,会对字符串进行解释整理后,再赋值给innerHTML

所以不等是正常的

你可以用prompt('', divinnerHTML)

把提示的html拷贝到记事本里,再跟你的字符串比较,就知道怎么不同了

你可以直接用innerHTML这个方法返回div的内容。

下面是个简单的小例子:

<body>

<div style="width:100px; height:100px; border:1px solid #ccc;">

<a href="#">111111</a>    

</div>

</body>

<script>

var oDiv = documentgetElementsByTagName('div')[0];

alert(oDivinnerHTML);   //这样就可以获取div标签里面所有的内容。

</script>

这样alertd出的框体里面的值是 '<a href="#">111111</a> ';

js获取div里的元素个数方法是:先得到父元素,再得到父元素下的某标签类别的子元素,最后统计出子元素的长度就可以简单实现了。

js 动态添加元素(div、li、img等)及设置属性的方法:

一、js 动态添加元素div

<div id="parent"></div>

function addElementDiv(obj) {var parent = documentgetElementById(obj);//添加 divvar div =

documentcreateElement("div");//

设置 div 属性,如 iddivsetAttribute("id", "newDiv");divinnerHTML = "js 动态添

div";parentappendChild(div);}

调用:addElementDiv("parent");

二、js 动态添加li

<ul id="parentUl"><li>原li</li></ul>

function addElementLi(obj) {var ul = documentgetElementById(obj);//添加 livar li =

documentcreateElement("li");//

设置 li 属性,如 idlisetAttribute("id", "newli");liinnerHTML = "js 动态添加li";ulappendChild(li);}

调用:addElementLi("parentUl");

三、js 动态添加元素img

<ul id="parentUl"></ul>

function addElementImg(obj) {var ul = documentgetElementById(obj);//添加 livar li =

documentcreateElement("li");//添加 imgvar img = documentcreateElement("img");//

设置 img 属性,如 idimgsetAttribute("id", "newImg");//设置 img 地址imgsrc =

"/images/prodjpg";

liappendChild(img);ulappendChild(li);}

调用:addElementImg("parentUl");

至少有2种方法:

一、用div控件,<div id="div1" runat="server">abcdef</div>,后台用div1InnerHtml获取。

二、前台用js把div的innerHTML值存入隐藏域<input type="hidden" name="hidden"/>中,提交服务器后用RequestForm["hidden"]获取值。

直接documentgetElementById就可以了。但是要在documentcreateElement("markerform")已经创建成功之后才能读到,否则就对象为空了,所以,可以考虑用一个全局的bool变量来检测状态。当全局的bool变量为真的时候就执行函数,反之,就不执行,所以在代码中要时时变换控制这个全局的bool变量的状态。

当然也可以在要控制id="markerSerch" 的时候进行判断,这样更直观:

if(documentgetElementById("markerSerch")==true){

// 页面中存在这个对象了,在执行相应的显示或隐藏 *** 作

}

//else{//页面中没有这个对象,不做 *** 作}

鼠标点击事件应该是标准写法,下面是通用代码,供参考。最后target是被点击的元素,取代你的this

function clicked_handler(e) {

    var e = e || event;  //标准化事件对象(W3C DOM 和IE DOM ), FF 或 IE

    var target = etarget || esrcElement; //标准化事件对象属性, FF或 IE

}

三个方法。DOM0级,DOM2级。

网上流传最广的DOM0级

<div id="a" onclick="f(this);">1</div>

function f(e){

alert(einnerHTML);

}

把this当做参数传入然后调用。

第二个算是混合类型的。严格来说不算是DOM2级。

function f(){

alert(eventsrcElementinnerHTML);

}

<div id="a" onclick="f();">1</div>

获取事件源。

这里有兼容问题。IE用srcElement。FF用的是target。而且如果要在FF运行需要把event当做参数写入。如:

<div id="a" onclick="f(event);">1</div>

function f(e){

alert(etargetinnerHTML);

}

第三个方法DOM2级的。

<div id="a">1</div>

function addEv(obj,ev,fn){

if(objattachEvent){//IE模型

objattachEvent("on"+ev,function(){

fncall(obj);

});

}else if(objaddEventListener){//W3C模型

objaddEventListener(ev,function(){

fncall(obj);

},false);

}else{

obj["on"+ev] = fn;

}

}

var t = documentgetElementById('a');

addEv(t,'click',function(){

alert(thisinnerHTML);

});

一般类库和高手都用这种写法。

第一个缺点就是如果不加call IE就会把this指向window。我做了点修改让他this指向当前对象了。还有一个缺点就是无法删除匿名函数写的事件。

objattachEvent("on"+ev,function(){

fncall(obj);

});

可以把这个function写到一个单独的函数中就可以删除了。不过this就不会指向当前的对象了。

如果想做的完美可以搜索detachEvent匿名函数或attachEvent匿名函数。

如果还不懂可以M我。

以上就是关于取一个<div>的innerHTML与一个字符串比较,alert出的innerHTML跟字符串相等,为什么程序判断总是不相等。全部的内容,包括:取一个<div>的innerHTML与一个字符串比较,alert出的innerHTML跟字符串相等,为什么程序判断总是不相等。、js如何获取div中的数据、js获取div里的元素个数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9410016.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存