页次: 1
对uedit 执行命令 setContent 的时候,应该保证编辑器已经初始化话完毕。才可是使用。
否则给出错误提示
Uncaught TypeError: Cannot set property 'innerHTML' of undefined
正确的写法应该是
var ue = UE.getEditor('editor');
var content = '惺惺惜惺惺;
var type = '<?php echo $row['type']; ?>';// ue.setContent(content); 错误的写法
// 正确的写法
ue.ready(function () {
ue.setContent(content);
});
因为直接执行构造函数,会出现,意想不到的的结果。具体可以看(js 如果直接执行 构造函数,会发生什么事情)
好的习惯应该是使用构造函数的时候 ,应该加上 "use strict" ,表示是严格的执行模式。
如果执行下面代码
function Test(name, age) {
"use strict";
this.name = 'zhangs';
}Test();
则 浏览器就会输出错误的新的信息
Uncaught TypeError: Cannot set property 'name' of undefined
所以加上 user strict 是更安全的做法。
先看一个示例代码
var age = 100;
function Test(name, age) {
this.name = name;
if(age) {
this.age = age;
} else {
this.age = 200;
}
}Test();
alert(age);
这段代码可以分成两个部分看。
第一个部分就是 var age = 100;
其余的部分是第二个部分。
输出结果是 200 .
表明 第二部分把第一部分的值给修改了。
本来 Test() 应该是个构造函数(javascript 中什么是构造函数) 来产生对象用的。结果直接给执行了。 构造函数中是有this 关键字的。
如果直接执行了, 在这个环境中this 就是表示 window 了。
结果就是 window.age = 200; 就把值给修改了。
所以说构造函数是不能直接执行了, 会产生变量,或者修改变量。
可以再 Test() 中加入
alert(this === window) // 执行的结果是 true
构造函数函数的普通函数的最大区别是 构造函数中会使用 this.
构造函数和普通的函数不太一样, 他们都是对象类型。
构造函数的目的是产生对象, 普通的函数的目的是完成一个特定的功能(面向过程的)。
产生一个对象的示例
function Test(name, age) {
this.name = name;
this.age = age;
}var zhangs = new Test('zhangs', '10');
alert(zhangs.name);
这里需要注意两点:
第一: 函数中使用 this 表示这是个构造函数,用来生产一个对象。
第二: 生成对象的时候需要用到关键字 new.
如果在生成对象的时候, 没有给出参数, 传递的就是 undefiend. 索引使用 new 的时候是不一定需要使用 ()的。
var zhangs = new Test;
var zhangs = new Test();
是等价的。
js 中的数据类型, 函数也是一种数据类型
<script>
w = function(type) {
document.writeln("<pre> typeof(" + type + ") :" + typeof (type) + " </pre>");
};w('1');
w(1);
w(w);
w(false);
w(undefined);
w(window);
</script>
打印的结果
<pre> typeof(1) :string </pre><pre> typeof(1) :number </pre>
<pre> typeof(function (type) {
document.writeln("<pre> typeof(" + type + ") :" + typeof (type) + " </pre>");
}) :function </pre>
<pre> typeof(false) :boolean </pre><pre> typeof(undefined) :undefined </pre>
<pre> typeof([object Window]) :object </pre>
undefined 的意思是 没有定义的。 是一种变量的类型
js 的变量类型有6中(js 中的数据类型有六种)
undefined 在不同的浏览器中有不同的表现。
ie中undefined 是可以被赋值的, 火狐和google 浏览器不能被赋值。
undefined = '111';
alert(undefined);
在google 浏览器中显示的是 undefined
再ie中显示的是 111.
undefined 只有一值,就是 undefiend
$("#a").append("str") ; 不字符串写入 #a 内部的后面
而 $("#a").after("<div>xxx</div>") ; 是吧 <div>xxx</div> 插入在 #a 外部的后面
而 $("p").appendTo("div") ; 是 p 插入在 div 的后面, 和 append 刚好是相反的。
比如
<div id="one"><p>one</p></div>
jquery
$("#one").append('<div id="two"><p>two</p></div>');
$("<div id='three'><p>three</p></div>").appendTo("#two");
$("#three").after("<div id='four'><p>four</p></div>");
结果
<div id="one">
<p>one</p>
<div id="two">
<p>two</p>
<div id="three">
<p>three</p>
</div>
<div id="four">
<p>four</p>
</div>
</div>
</div>
第一步骤 append 表示再 #one 内部的最后 增加 #two
第二步骤 把 #three 插入在 two 内部 的后面
第三步骤 再 three 的外部后面写入 #four
before 的使用方法和 after 一样
在元素的外面, 之前写入。
示例
html
<div id="one">one</div>
jquery
$("#one").before('<div id="two">two</div>');
$("#one").before('<div id="three">three</div>').before(function() {
return '<div id="four">four</div>';
});
输出的结果是
<div id="two">two</div>
<div id="three">three</div>
<div id="four">four</div>
<div id="one">one</div>
每次都是 再one 的前面写入了 two , three, four,
jquery after 是在元素之后追加一个元素
测试代码
$(document).ready(function() {
$("#one").after('<div id="two">two</div>');
$("#one").after('<div id="one">three</div>').after(function() {
return '<div id="four">four</div>';
});
});
html
<div id="one">one</div>
输出的结果是
<div id="one">one</div>
<div id="four">four</div>
<div id="three">three</div>
<div id="two">two</div>
首先参数使用 一个字符串,表示把这个字符串写入到 one 的外面 之后。
第二个使用链式操作,还是放到了one之后 three , 最后一个操作也是 one 之后。
这个是前追加, 而 append 是后追加。
两个的用法一样, 不同地方是是一个追加的地方是元素对象的开头, 一个是结尾。
用法可以查看
示例
jquery
$(document).ready(function() {
$("#f").append('<div id="s1">s1</div>');
$("#f").prepend('<div id="s2">s2</div>');
});
html
<div id="f" style="outline: 2px solid red">
<p>fater</p>
</div>
输出结果
<div id="f" style="outline: 2px solid red">
<div id="s2">s2</div>
<p>fater</p>
<div id="s1">s1</div>
</div>
appendTo(str) 的是使用方法是:
首先选定一个jquery对象, 然后 把这个对象加入到 str 中。
str 经过 appentTo 也是一个jQuery 对象了。
这个和 append 是不同的,$("#a").append("b"); 这里的b是一个字符串, 复制移动到jquery 对象 $("#a")中。
而 $("b").appendTo("p") 表示把 p 这里不是一个字符p 而是所有的 p标签的内容 复制移动到 所有的 b 标签中。
一个例子
html 代码如下
<p>1</p>
<p>2</p>
<b>xxx</b>
<b>yyy</b>
jquery 代码如下
$(document).ready(function() {
var d = $("b").appendTo("p");
alert( d instanceof $ );
alert( d.html('zzz'));
});
显示的结果 分为三个步骤
第一: 显示的内容是
1xxxyyy
2xxxyyy
这个表示, 分别把<b>xxx</b> <b>yyy</b> 复制两份移动分别移动(复制移动)到 <p>中。
然后 alert(true) 表示 返回的还是jquery对象,
最后的结果都变成了
1zzzzzz
2zzzzzz
表示 返回的结果是 $("b");
页次: 1