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;
}
}
|
<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>
|
<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>
|
/*
* 方法: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;
};
|