这段JS代码Javascript大概什么意思。怎么用。 在一个人的SharePoint博客上看见的。

SharePoint Designer 修改EditForm.aspx 页面,实现两个Select控件联动效果,实现方式:添加Load事件,在Load时给Select控件注册控件的onpropertychange事件。

<script type="text/javascript">

/* Bengin of addLoadEvent, Form Load Event. @Echo Liu*/

function addLoadEvent(func) {

var oldonload = window.onload;

if (typeof window.onload != 'function') {

window.onload = func;

} else {

window.onload = function() {

if (oldonload) {

oldonload();

}

func();

}

}

}

var m_muLastSelectIndex = -1;

var m_processerArray;

var m_objMU;

var m_objProcessOwner;

/* Filter ProcessOwner by MU */

function FilterProcessorOwnerByMU()

{

if(m_objMU.selectedIndex != m_muLastSelectIndex)

{

m_muLastSelectIndex = m_objMU.selectedIndex;

var mu3 = m_objMU.options(m_muLastSelectIndex).value;

for(i = m_objProcessOwner.options.length - 1; i >= 0; i--)

{

m_objProcessOwner.options.remove(i);

}

for(i= 0; i < m_processerArray.length; i++)

{

var arrayPO = m_processerArray[i];

if(arrayPO[0].indexOf(mu3) == 0)

{

var oOption3 = document.createElement("OPTION");

m_objProcessOwner.options.add(oOption3);

oOption3.value = arrayPO[0];

oOption3.text = arrayPO[1];

}

}

}

}

function MUModelInitEvents()

{

var collSELECT = document.all.tags("SELECT");

for (i=0; i< collSELECT.length; i++)

{

var objCurrent = collSELECT(i);

if(objCurrent.title == "MU")

{

m_objMU = objCurrent;

}

else if(objCurrent.title == "ProcessOwner")

{

m_objProcessOwner = objCurrent;

m_processerArray = new Array();

for (j=0; j < objCurrent.options.length; j++)

{

m_processerArray[j] = new Array();

m_processerArray[j][0] = objCurrent.options(j).value;

m_processerArray[j][1] = objCurrent.options(j).text;

}

}

}

m_objMU.onpropertychange = FilterProcessorOwnerByMU;

FilterProcessorOwnerByMU();

}

addLoadEvent(MUModelInitEvents);

addLoadEvent(function() {

/* more code to run on page load */

});

/* End of addLoadEvent @Echo Liu */

</script>

<script type="text/javascript">
/* Bengin of addLoadEvent, Form Load Event. @Echo Liu*/

/*
此函数是在保存原来绑定的onload的函数的基础上,
添加新方法,而不覆盖原来方法的函数
*/
function addLoadEvent(func) {
//保存其他可能绑定在加载完成事件上的方法
var oldonload = window.onload;
if (typeof window.onload != 'function') {
//如果没有网页加载完成事件,则直接把传过来的函数传给它
window.onload = func;
} else {
//否则对其进行覆盖
window.onload = function() {
//判断原来绑定的方法是否存在
if (oldonload) {
oldonload();//存在则运行
}
func();//运行传进来的方法
}
}
}

//保存上次选择的项的索引
var m_muLastSelectIndex = -1;
//保存第一个下拉列表的值与文本
var m_processerArray;
//保存第一个下拉列表对象
var m_objMU;
//保存第二个下拉列表对象
var m_objProcessOwner;
/* Filter ProcessOwner by MU */

function FilterProcessorOwnerByMU()

{
//判断第一个下列列表选择的对象有没有改变
if(m_objMU.selectedIndex != m_muLastSelectIndex)
{
//如果改变了,改变后的变为最后一次选择
m_muLastSelectIndex = m_objMU.selectedIndex;
//保存第一个下列列表选择的项的值
var mu3 = m_objMU.options(m_muLastSelectIndex).value;
//这个循环的作用就是删除第二个下拉列表内的所有项,这里要移除所有,
//简单点的方法就是 m_objProcessOwner.options.length = 0;
for(i = m_objProcessOwner.options.length - 1; i >= 0; i--)

{

m_objProcessOwner.options.remove(i);

}

//这个循环的作用就是根据第一个下拉列表的选择改变第二个下拉列表的选择
for(i= 0; i < m_processerArray.length; i++)
{
//arrayPO为循环取值时保存各个值的数组对象,m_processerArray为网页加载时保存第二个下拉列表所有选项的值和文本的数组
//此对象的索引号0位置保存的是值(value),索引号1位置保存的是文本对象(text),下面有初始化的方法
var arrayPO = m_processerArray[i];
//如果值对象的值,以 当前第一个下拉列表中选中的项的值 开头,
//就新建一个以此值和文本的项添加到第二个下拉列表中
if(arrayPO[0].indexOf(mu3) == 0)
{

var oOption3 = document.createElement("OPTION");

m_objProcessOwner.options.add(oOption3);

oOption3.value = arrayPO[0];

oOption3.text = arrayPO[1];

}

}

}

}

/*
此函数目的是给第一个下拉列表添加改变事件
且把第二个下拉列表的所有值保存起来
*/
function MUModelInitEvents()
{
//获取所有的select下拉框,此方法只在ie及ie内核浏览器有用,其他浏览器不支持,建议使用getElementsByTagName
var collSELECT = document.all.tags("SELECT");
for (i=0; i< collSELECT.length; i++)
{
var objCurrent = collSELECT(i);

if(objCurrent.title == "MU")
{
//初始化全局的保存第一个下拉列表的对象,供其他方法使用
m_objMU = objCurrent;

}
else if(objCurrent.title == "ProcessOwner")
{
//初始化全局的保存第二个下拉列表的对象,供其他方法使用
m_objProcessOwner = objCurrent;
//保存所有的选项的值和文本
m_processerArray = new Array();
for (j=0; j < objCurrent.options.length; j++)
{
m_processerArray[j] = new Array();
m_processerArray[j][0] = objCurrent.options(j).value;
m_processerArray[j][1] = objCurrent.options(j).text;
}
}
}

//绑定事件
m_objMU.onpropertychange = FilterProcessorOwnerByMU;
//自调用一次事件
FilterProcessorOwnerByMU();

}

//添加网页onload事件,绑定下拉列表的属性改变事件
addLoadEvent(MUModelInitEvents);
//添加其他onload事件
addLoadEvent(function() {

/* more code to run on page load */

});
/* End of addLoadEvent @Echo Liu */
</script>

哎,写完,我发现我真闲的慌,这个确实不太难,多看看就了解了···········
温馨提示:答案为网友推荐,仅供参考