`
thunderbow
  • 浏览: 154109 次
  • 性别: Icon_minigender_1
  • 来自: beijing
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
JavaScript操作java对象 JavaScript操作java对象
import java.util.ArrayList;
import java.util.List;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;


public class JSModifiedJava {
	
	public void sayHello(String name){
		System.out.println("*************Hello***************"+name);
	} 
	
    public static void main(String[] args) {

        //创建 List对象,并添加3个原用户
        List<String> us = new ArrayList<String>();
        us.add("JLee 1");
        us.add("JLee 2");

        //获得JS引擎
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByExtension("js");

        //把List对象加入JS引擎
        engine.put("usList", us);
        //将要操作的对象法如引擎
        engine.put("obj", new JSModifiedJava()) ;
        
        try {
            engine.eval(getScript());//通过引擎调用getScript()
            //显示所有用户
            for (String usname : us) {
                System.out.println("所有用户 = " + usname);
            }
        } catch (ScriptException e) {
            e.printStackTrace();
        }
        
      //根据JavaScript名获取一个脚本引擎实例
	    ScriptEngine engine2 = manager.getEngineByName("JavaScript");
	    try {
	        engine2.eval("print('Hello JLee ...')");
	    } catch (ScriptException e) {
	        e.printStackTrace();
	    }

    }

    //获取JavaScript串
    private static String getScript() {
        //我们在脚本里添加4个新用户
        String script =
                "var index; " +
                "var usname = usList.toArray(); " +
                "for (index in usname) { " +
                "    println('原用户='+usname[index]); " +
                "}" +
                "usList.add(\"JLee 3\"); " +
        		"usList.add(\"JLee 4\"); "  +
        		"obj.sayHello('JLee')" ;
        return script;
    }
    
}
JavaScript操作java对象 JavaScript操作java对象
import java.util.List;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineFactory;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class GetSupportedScriptingEngine {
    public static void main(String[] args) {

        //创建一个ScriptEngineManager
        ScriptEngineManager manager = new ScriptEngineManager();
        //取得所有ScriptEngineFactory
        List<ScriptEngineFactory> factories = manager.getEngineFactories();

        //遍历输出
        for (ScriptEngineFactory factory : factories) {
            System.out.println("EngineName      = " + factory.getEngineName());
            System.out.println("EngineVersion   = " + factory.getEngineVersion());
            System.out.println("LanguageName    = " + factory.getLanguageName());
            System.out.println("LanguageVersion = " + factory.getLanguageVersion());
            System.out.println("Extensions      = " + factory.getExtensions());

            List<String> names = factory.getNames();
            for (String name : names) {
                System.out.println("Engine Alias = " + name);
            }
            
            //通过factory获取ScriptEngine
            ScriptEngine scriptEngine = factory.getScriptEngine() ;
            //ScriptEngine scriptEngine1 = manager.getEngineByExtension("js") ;其他方式获取
            //ScriptEngine scriptEngine2 = manager.getEngineByName("JavaScript") ;其他方式获取
            try {
            	//脚本引擎执行JavaScript语句
				scriptEngine.eval("var arr = new Array() ; arr.push(1); print(arr.pop())") ;
			} catch (ScriptException e) {
				e.printStackTrace();
			}
        }
    }
}
年月日下拉选择
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>如何实现一个日期下拉菜单</title>
<script type="text/javascript"> 
function DateSelector(selYear, selMonth, selDay)
{
    this.selYear = selYear;
    this.selMonth = selMonth;
    this.selDay = selDay;
    this.selYear.Group = this;
    this.selMonth.Group = this;
    // 给年份、月份下拉菜单添加处理onchange事件的函数
    if(window.document.all != null) // IE
    {
        this.selYear.attachEvent("onchange", DateSelector.Onchange);
        this.selMonth.attachEvent("onchange", DateSelector.Onchange);
    }
    else // Firefox
    {
        this.selYear.addEventListener("change", DateSelector.Onchange, false);
        this.selMonth.addEventListener("change", DateSelector.Onchange, false);
    }
    if(arguments.length == 4) // 如果传入参数个数为4,最后一个参数必须为Date对象
        this.InitSelector(arguments[3].getFullYear(), arguments[3].getMonth() + 1, arguments[3].getDate());
    else if(arguments.length == 6) // 如果传入参数个数为6,最后三个参数必须为初始的年月日数值
        this.InitSelector(arguments[3], arguments[4], arguments[5]);
    else // 默认使用当前日期
    {
        var dt = new Date();
        this.InitSelector(dt.getFullYear(), dt.getMonth() + 1, dt.getDate());
    }
}
// 增加一个最大年份的属性
DateSelector.prototype.MinYear = 1900;
// 增加一个最大年份的属性
DateSelector.prototype.MaxYear = (new Date()).getFullYear();
// 初始化年份
DateSelector.prototype.InitYearSelect = function()
{
    // 循环添加OPION元素到年份select对象中
    for(var i = this.MaxYear; i >= this.MinYear; i--)
    {
        // 新建一个OPTION对象
        var op = window.document.createElement("OPTION");
        
        // 设置OPTION对象的值
        op.value = i;
        
        // 设置OPTION对象的内容
        op.innerHTML = i;
        
        // 添加到年份select对象
        this.selYear.appendChild(op);
    }
}
// 初始化月份
DateSelector.prototype.InitMonthSelect = function()
{
    // 循环添加OPION元素到月份select对象中
    for(var i = 1; i < 13; i++)
    {
        // 新建一个OPTION对象
        var op = window.document.createElement("OPTION");
        
        // 设置OPTION对象的值
        op.value = i;
        
        // 设置OPTION对象的内容
        op.innerHTML = i;
        
        // 添加到月份select对象
        this.selMonth.appendChild(op);
    }
}
// 根据年份与月份获取当月的天数
DateSelector.DaysInMonth = function(year, month)
{
    var date = new Date(year, month, 0);
    return date.getDate();
}
// 初始化天数
DateSelector.prototype.InitDaySelect = function()
{
    // 使用parseInt函数获取当前的年份和月份
    var year = parseInt(this.selYear.value);
    var month = parseInt(this.selMonth.value);
    
    // 获取当月的天数
    var daysInMonth = DateSelector.DaysInMonth(year, month);
    
    // 清空原有的选项
    this.selDay.options.length = 0;
    // 循环添加OPION元素到天数select对象中
    for(var i = 1; i <= daysInMonth ; i++)
    {
        // 新建一个OPTION对象
        var op = window.document.createElement("OPTION");
        
        // 设置OPTION对象的值
        op.value = i;
        
        // 设置OPTION对象的内容
        op.innerHTML = i;
        
        // 添加到天数select对象
        this.selDay.appendChild(op);
    }
}
// 处理年份和月份onchange事件的方法,它获取事件来源对象(即selYear或selMonth)
// 并调用它的Group对象(即DateSelector实例,请见构造函数)提供的InitDaySelect方法重新初始化天数
// 参数e为event对象
DateSelector.Onchange = function(e)
{
    var selector = window.document.all != null ? e.srcElement : e.target;
    selector.Group.InitDaySelect();
}
// 根据参数初始化下拉菜单选项
DateSelector.prototype.InitSelector = function(year, month, day)
{
    // 由于外部是可以调用这个方法,因此我们在这里也要将selYear和selMonth的选项清空掉
    // 另外因为InitDaySelect方法已经有清空天数下拉菜单,因此这里就不用重复工作了
    this.selYear.options.length = 0;
    this.selMonth.options.length = 0;
    
    // 初始化年、月
    this.InitYearSelect();
    this.InitMonthSelect();
    
    // 设置年、月初始值
    this.selYear.selectedIndex = this.MaxYear - year;
    this.selMonth.selectedIndex = month - 1;
    
    // 初始化天数
    this.InitDaySelect();
    
    // 设置天数初始值
    this.selDay.selectedIndex = day - 1;
}
</script>
</head>
<body>
<select id="selYear"></select>
<select id="selMonth"></select>
<select id="selDay"></select>
<script type="text/javascript"> 
var selYear = window.document.getElementById("selYear");
var selMonth = window.document.getElementById("selMonth");
var selDay = window.document.getElementById("selDay");
// 新建一个DateSelector类的实例,将三个select对象传进去
new DateSelector(selYear, selMonth ,selDay, 2004, 2, 29);
// 也可以试试下边的代码
// var dt = new Date(2004, 1, 29);
// new DateSelector(selYear, selMonth ,selDay, dt);
</script>
</body>
</html>
多选框-select复选 多选框
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="css/style.css" rel="stylesheet" type="text/css">
<script> 
function moveselect(obj,target,all){
if (!all) all=0
if (obj!="[object]") obj=eval("document.all."+obj)
target=eval("document.all."+target)
if (all==0)
{
   while (obj.selectedIndex>-1){
 
   //alert(obj.selectedIndex)
   mot=obj.options[obj.selectedIndex].text
   //obj.options[obj.selectedIndex].selected=true;
   mov=obj.options[obj.selectedIndex].value
   obj.remove(obj.selectedIndex)
   
// obj.options[obj.selectedIndex+1].selected=true;
   var newoption=document.createElement("OPTION");
   newoption.text=mot
   newoption.value=mov
   target.add(newoption)
 
   }
}
else
{
//alert(obj.options.length)
for (i=0;i<obj.length;i++)
   {
   mot=obj.options[i].text
   mov=obj.options[i].value
   alert(mot);
   var newoption=document.createElement("OPTION");
   newoption.text=mot
   newoption.value=mov
   target.add(newoption)
   }
obj.options.length=0
}
}
</script>
</head>
<body>
<table border="0" width="100%" cellspacing="0" cellpadding="0" height=100%>
<tr>
<td align="center" valign="top">
<br><br><br>
<table border="1" width="373" id="table3" bordercolor="#000000" bgcolor="#FFFFFF" style="border-collapse: collapse" cellspacing="3" cellpadding="0" class=bd>
<tr>
<td>
<table border="1" width="100%" id="table4" style="border-collapse: collapse" bordercolor="#808080" cellpadding="2" bgcolor="#EDF3F3" cellspacing="0">
<tr>
<td width="117" class=song_black_14 align="right">
<p align="left">
<font size="2">该部门员工</font><select size="14" name="D1" ondblclick="moveselect(this,'D2')" multiple style="width:140px">
   <option value="员工1">员工1</option>
   <option value="员工2">员工2</option>
   <option value="员工3">员工3</option>
</select></td>
<td width="117" class=song_black_14 align="right">
<p align="center">
<input type="button" value="<<" name="B3" onclick="moveselect('D2','D1',1)"><p align="center">
<input type="button" value="<" name="B5" onclick="moveselect('D2','D1')"><p align="center">
<input type="button" value=">" name="B6" onclick="moveselect('D1','D2')"><p align="center">
<input type="button" value=">>" name="B4" onclick="moveselect('D1','D2',1)"></td>
<td width="117" class=song_black_14 align="right">
<p align="left">
<font size="2">未划分部门员工</font><select size="14" name="D2" ondblclick="moveselect(this,'D1')" multiple style="width:140px">
   <option value="员工4">员工4</option>
   <option value="员工5">员工5</option>
</select></td>
</tr>
</table>
         </td>
</tr>
</table>
          </td>
</tr>
</table>
</body>
</html>
js 数组删除操作 js中数组的remove
/*
 *  方法:Array.remove(dx)
 *  功能:根据元素值删除数组元素.
 *  参数:元素值
 *  返回:在原数组上修改数组
 *	作者:pxp
 */
Array.prototype.indexOf = function (val) {
	for (var i = 0; i < this.length; i++) {
		if (this[i] == val) {
			return i;
		}
	}
	return -1;
};
Array.prototype.removevalue = function (val) {
	var index = this.indexOf(val);
	if (index > -1) {
		this.splice(index, 1);
	}
};


/*
 *  方法:Array.remove(dx)
 *  功能:根据元素位置值删除数组元素.
 *  参数:元素值
 *  返回:在原数组上修改数组
 *	作者:pxp
 */
Array.prototype.remove = function (dx) {
	if (isNaN(dx) || dx > this.length) {
		return false;
	}
	for (var i = 0, n = 0; i < this.length; i++) {
		if (this[i] != this[dx]) {
			this[n++] = this[i];
		}
	}
	this.length -= 1;
};
Global site tag (gtag.js) - Google Analytics