- 注册时间
- 2011-3-22
- 最后登录
- 2013-6-1
- 在线时间
- 51 小时
- 阅读权限
- 200
- 积分
- 4397
- 帖子
- 248
- 精华
- 0
- UID
- 9
|
- <div id="preview">
- <div class="jqzoom" id="focuscont" >
- <div id="focuscont1" style="display:none">
- <a href="gallery.php?id=203&img=308" target="_blank"><img src="images/201106/goods_img/203_P_1307416283056.jpg" width="320" height="380" align="middle" onload="javascript:DrawImage(this);"/></a>
- </div>
- <div id="focuscont2" style="display:none">
- <a href="gallery.php?id=203&img=309" target="_blank"><img src="images/201106/goods_img/203_P_1307416283074.jpg" width="320" height="380" align="middle" onload="javascript:DrawImage(this);"/></a>
- </div>
- <div id="focuscont3" style="display:none">
- <a href="gallery.php?id=203&img=310" target="_blank"><img src="images/201106/goods_img/203_P_1307416283250.jpg" width="320" height="380" align="middle" onload="javascript:DrawImage(this);"/></a>
- </div>
- <div id="focuscont4" style="display:none">
- <a href="gallery.php?id=203&img=311" target="_blank"><img src="images/201106/goods_img/203_P_1307416283529.jpg" width="320" height="380" align="middle" onload="javascript:DrawImage(this);"/></a>
- </div>
- <div id="focuscont5" style="display:none">
- <a href="gallery.php?id=203&img=312" target="_blank"><img src="images/201106/goods_img/203_P_1307416283968.jpg" width="320" height="380" align="middle" onload="javascript:DrawImage(this);"/></a>
- </div>
- <div id="focuscont6" style="display:none">
- <a href="gallery.php?id=203&img=313" target="_blank"><img src="images/201106/goods_img/203_P_1307416283604.jpg" width="320" height="380" align="middle" onload="javascript:DrawImage(this);"/></a>
- </div>
- <div id="focuscont7" style="display:none">
- <a href="gallery.php?id=203&img=314" target="_blank"><img src="images/201106/goods_img/203_P_1307416283627.jpg" width="320" height="380" align="middle" onload="javascript:DrawImage(this);"/></a>
- </div>
- </div>
- <div id=spec-n5>
- <div class=control id=spec-left>
- <img src="themes/commodity/images/left.gif" />
- </div>
- <div id=spec-list>
- <ul id="focustab" class="list-h">
- <li><a href="#go" target="_blank" name="1"><img src="images/201106/goods_img/203_P_1307416283056.jpg" /></a></li>
- <li><a href="#go" target="_blank" name="2"><img src="images/201106/goods_img/203_P_1307416283074.jpg" /></a></li>
- <li><a href="#go" target="_blank" name="3"><img src="images/201106/goods_img/203_P_1307416283250.jpg" /></a></li>
- <li><a href="#go" target="_blank" name="4"><img src="images/201106/goods_img/203_P_1307416283529.jpg" /></a></li>
- <li><a href="#go" target="_blank" name="5"><img src="images/201106/goods_img/203_P_1307416283968.jpg" /></a></li>
- <li><a href="#go" target="_blank" name="6"><img src="images/201106/goods_img/203_P_1307416283604.jpg" /></a></li>
- <li><a href="#go" target="_blank" name="7"><img src="images/201106/goods_img/203_P_1307416283627.jpg" /></a></li>
- </ul>
- </div>
- <div class=control id=spec-right>
- <img src="themes/commodity/images/right.gif" />
- </div>
- <script>initAutoFocus();</script>
- </div>
- </div>
- <script type="text/javascript">
- $(function(){
- $("#spec-list").jdMarquee({
- deriction:"left",
- width:294,
- height:50,
- step:2,
- speed:4,
- delay:10,
- control:true,
- _front:"#spec-right",
- _back:"#spec-left"
- });
- $("#spec-list img").bind("mouseover",function(){
- var src=$(this).attr("src");
- $("#spec-n1 img").eq(0).attr({
- src:src.replace("\/n5\/","\/n1\/"),
- jqimg:src.replace("\/n5\/","\/n0\/")
- });
- $(this).css({
- "border":"2px solid #ff6600",
- "padding":"1px"
- });
- }).bind("mouseout",function(){
- $(this).css({
- "border":"1px solid #ccc",
- "padding":"2px"
- });
- });
- })
- </script>
复制代码 这代码是我要的效果,但会跟下面的一个JS冲突,有下面的JS上面就不能起作用,帮我看看是哪里冲突了- /**
- * @file transport.js
- * @description 用于支持AJAX的传输类。
- * @author ECShop R&D Team ( [url]http://www.ecshop.com/[/url] )
- * @date 2007-03-08 Wednesday
- * @license Licensed under the Academic Free License 2.1 [url]http://www.opensource.org/licenses/afl-2.1.php[/url]
- * @version 1.0.20070308
- **/
- var Transport =
- {
- /* *
- * 存储本对象所在的文件名。
- *
- * @static
- */
- filename : "transport.js",
- /* *
- * 存储是否进入调试模式的开关,打印调试消息的方式,换行符,调试用的容器的ID。
- *
- * @private
- */
- debugging :
- {
- isDebugging : 0,
- debuggingMode : 0,
- linefeed : "",
- containerId : 0
- },
- /* *
- * 设置调试模式以及打印调试消息方式的方法。
- *
- * @public
- * @param {int} 是否打开调试模式 0:关闭,1:打开
- * @param {int} 打印调试消息的方式 0:alert,1:innerHTML
- *
- */
- debug : function (isDebugging, debuggingMode)
- {
- this.debugging =
- {
- "isDebugging" : isDebugging,
- "debuggingMode" : debuggingMode,
- "linefeed" : debuggingMode ? "<br />" : "\n",
- "containerId" : "dubugging-container" + new Date().getTime()
- };
- },
- /* *
- * 传输完毕后自动调用的方法,优先级比用户从run()方法中传入的回调函数高。
- *
- * @public
- */
- onComplete : function ()
- {
- },
- /* *
- * 传输过程中自动调用的方法。
- *
- * @public
- */
- onRunning : function ()
- {
- },
- /* *
- * 调用此方法发送HTTP请求。
- *
- * @public
- * @param {string} url 请求的URL地址
- * @param {mix} params 发送参数
- * @param {Function} callback 回调函数
- * @param {string} ransferMode 请求的方式,有"GET"和"POST"两种
- * @param {string} responseType 响应类型,有"JSON"、"XML"和"TEXT"三种
- * @param {boolean} asyn 是否异步请求的方式
- * @param {boolean} quiet 是否安静模式请求
- */
- run : function (url, params, callback, transferMode, responseType, asyn, quiet)
- {
- /* 处理用户在调用该方法时输入的参数 */
- params = this.parseParams(params);
- transferMode = typeof(transferMode) === "string"
- && transferMode.toUpperCase() === "GET"
- ? "GET"
- : "POST";
- if (transferMode === "GET")
- {
- var d = new Date();
- url += params ? (url.indexOf("?") === - 1 ? "?" : "&") + params : "";
- url = encodeURI(url) + (url.indexOf("?") === - 1 ? "?" : "&") + d.getTime() + d.getMilliseconds();
- params = null;
- }
- responseType = typeof(responseType) === "string" && ((responseType = responseType.toUpperCase()) === "JSON" || responseType === "XML") ? responseType : "TEXT";
- asyn = asyn === false ? false : true;
- /* 处理HTTP请求和响应 */
- var xhr = this.createXMLHttpRequest();
- try
- {
- var self = this;
- if (typeof(self.onRunning) === "function" && !quiet)
- {
- self.onRunning();
- }
- xhr.open(transferMode, url, asyn);
- if (transferMode === "POST")
- {
- xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
- }
- if (asyn)
- {
- xhr.onreadystatechange = function ()
- {
- if (xhr.readyState == 4)
- {
- switch ( xhr.status )
- {
- case 0:
- case 200: // OK!
- /*
- * If the request was to create a new resource
- * (such as post an item to the database)
- * You could instead return a status code of '201 Created'
- */
- if (typeof(self.onComplete) === "function")
- {
- self.onComplete();
- }
- if (typeof(callback) === "function")
- {
- callback.call(self, self.parseResult(responseType, xhr), xhr.responseText);
- }
- break;
- case 304: // Not Modified
- /*
- * This would be used when your Ajax widget is
- * checking for updated content,
- * such as the Twitter interface.
- */
- break;
- case 400: // Bad Request
- /*
- * A bit like a safety net for requests by your JS interface
- * that aren't supported on the server.
- * "Your browser made a request that the server cannot understand"
- */
- alert("XmlHttpRequest status: [400] Bad Request");
- break;
- case 404: // Not Found
- alert("XmlHttpRequest status: [404] \nThe requested URL "+url+" was not found on this server.");
- break;
- case 409: // Conflict
- /*
- * Perhaps your JavaScript request attempted to
- * update a Database record
- * but failed due to a conflict
- * (eg: a field that must be unique)
- */
- break;
- case 503: // Service Unavailable
- /*
- * A resource that this request relies upon
- * is currently unavailable
- * (eg: a file is locked by another process)
- */
- alert("XmlHttpRequest status: [503] Service Unavailable");
- break;
- default:
- alert("XmlHttpRequest status: [" + xhr.status + "] Unknow status.");
- }
- xhr = null;
- }
- }
- if (xhr != null) xhr.send(params);
- }
- else
- {
- if (typeof(self.onRunning) === "function")
- {
- self.onRunning();
- }
- xhr.send(params);
- var result = self.parseResult(responseType, xhr);
- //xhr = null;
- if (typeof(self.onComplete) === "function")
- {
- self.onComplete();
- }
- if (typeof(callback) === "function")
- {
- callback.call(self, result, xhr.responseText);
- }
- return result;
- }
- }
- catch (ex)
- {
- if (typeof(self.onComplete) === "function")
- {
- self.onComplete();
- }
- alert(this.filename + "/run() error:" + ex.description);
- }
- },
- /* *
- * 如果开启了调试模式,该方法会打印出相应的信息。
- *
- * @private
- * @param {string} info 调试信息
- * @param {string} type 信息类型
- */
- displayDebuggingInfo : function (info, type)
- {
- if ( ! this.debugging.debuggingMode)
- {
- alert(info);
- }
- else
- {
- var id = this.debugging.containerId;
- if ( ! document.getElementById(id))
- {
- div = document.createElement("DIV");
- div.id = id;
- div.style.position = "absolute";
- div.style.width = "98%";
- div.style.border = "1px solid #f00";
- div.style.backgroundColor = "#eef";
- var pageYOffset = document.body.scrollTop
- || window.pageYOffset
- || 0;
- div.style.top = document.body.clientHeight * 0.6
- + pageYOffset
- + "px";
- document.body.appendChild(div);
- div.innerHTML = "<div></div>"
- + "<hr style='height:1px;border:1px dashed red;'>"
- + "<div></div>";
- }
- var subDivs = div.getElementsByTagName("DIV");
- if (type === "param")
- {
- subDivs[0].innerHTML = info;
- }
- else
- {
- subDivs[1].innerHTML = info;
- }
- }
- },
- /* *
- * 创建XMLHttpRequest对象的方法。
- *
- * @private
- * @return 返回一个XMLHttpRequest对象
- * @type Object
- */
- createXMLHttpRequest : function ()
- {
- var xhr = null;
- if (window.ActiveXObject)
- {
- var versions = ['Microsoft.XMLHTTP', 'MSXML6.XMLHTTP', 'MSXML5.XMLHTTP', 'MSXML4.XMLHTTP', 'MSXML3.XMLHTTP', 'MSXML2.XMLHTTP', 'MSXML.XMLHTTP'];
- for (var i = 0; i < versions.length; i ++ )
- {
- try
- {
- xhr = new ActiveXObject(versions[i]);
- break;
- }
- catch (ex)
- {
- continue;
- }
- }
- }
- else
- {
- xhr = new XMLHttpRequest();
- }
- return xhr;
- },
- /* *
- * 当传输过程发生错误时将调用此方法。
- *
- * @private
- * @param {Object} xhr XMLHttpRequest对象
- * @param {String} url HTTP请求的地址
- */
- onXMLHttpRequestError : function (xhr, url)
- {
- throw "URL: " + url + "\n"
- + "readyState: " + xhr.readyState + "\n"
- + "state: " + xhr.status + "\n"
- + "headers: " + xhr.getAllResponseHeaders();
- },
- /* *
- * 对将要发送的参数进行格式化。
- *
- * @private
- * @params {mix} params 将要发送的参数
- * @return 返回合法的参数
- * @type string
- */
- parseParams : function (params)
- {
- var legalParams = "";
- params = params ? params : "";
- if (typeof(params) === "string")
- {
- legalParams = params;
- }
- else if (typeof(params) === "object")
- {
- try
- {
- legalParams = "JSON=" + params.toJSONString();
- }
- catch (ex)
- {
- alert("Can't stringify JSON!");
- return false;
- }
- }
- else
- {
- alert("Invalid parameters!");
- return false;
- }
- if (this.debugging.isDebugging)
- {
- var lf = this.debugging.linefeed,
- info = "[Original Parameters]" + lf + params + lf + lf
- + "[Parsed Parameters]" + lf + legalParams;
- this.displayDebuggingInfo(info, "param");
- }
- return legalParams;
- },
- /* *
- * 对返回的HTTP响应结果进行过滤。
- *
- * @public
- * @params {mix} result HTTP响应结果
- * @return 返回过滤后的结果
- * @type string
- */
- preFilter : function (result)
- {
- return result.replace(/\xEF\xBB\xBF/g, "");
- },
- /* *
- * 对返回的结果进行格式化。
- *
- * @private
- * @return 返回特定格式的数据结果
- * @type mix
- */
- parseResult : function (responseType, xhr)
- {
- var result = null;
- switch (responseType)
- {
- case "JSON" :
- result = this.preFilter(xhr.responseText);
- try
- {
- result = result.parseJSON();
- }
- catch (ex)
- {
- throw this.filename + "/parseResult() error: can't parse to JSON.\n\n" + xhr.responseText;
- }
- break;
- case "XML" :
- result = xhr.responseXML;
- break;
- case "TEXT" :
- result = this.preFilter(xhr.responseText);
- break;
- default :
- throw this.filename + "/parseResult() error: unknown response type:" + responseType;
- }
- if (this.debugging.isDebugging)
- {
- var lf = this.debugging.linefeed,
- info = "[Response Result of " + responseType + " Format]" + lf
- + result;
- if (responseType === "JSON")
- {
- info = "[Response Result of TEXT Format]" + lf
- + xhr.responseText + lf + lf
- + info;
- }
- this.displayDebuggingInfo(info, "result");
- }
- return result;
- }
- };
- /* 定义两个别名 */
- var Ajax = Transport;
- Ajax.call = Transport.run;
- /*
- json.js
- 2007-03-06
- Public Domain
- This file adds these methods to JavaScript:
- array.toJSONString()
- boolean.toJSONString()
- date.toJSONString()
- number.toJSONString()
- object.toJSONString()
- string.toJSONString()
- These methods produce a JSON text from a JavaScript value.
- It must not contain any cyclical references. Illegal values
- will be excluded.
- The default conversion for dates is to an ISO string. You can
- add a toJSONString method to any date object to get a different
- representation.
- string.parseJSON(filter)
- This method parses a JSON text to produce an object or
- array. It can throw a SyntaxError exception.
- The optional filter parameter is a function which can filter and
- transform the results. It receives each of the keys and values, and
- its return value is used instead of the original value. If it
- returns what it received, then structure is not modified. If it
- returns undefined then the member is deleted.
- Example:
- // Parse the text. If a key contains the string 'date' then
- // convert the value to a date.
- myData = text.parseJSON(function (key, value) {
- return key.indexOf('date') >= 0 ? new Date(value) : value;
- });
- It is expected that these methods will formally become part of the
- JavaScript Programming Language in the Fourth Edition of the
- ECMAScript standard in 2008.
- */
- // Augment the basic prototypes if they have not already been augmented.
- if ( ! Object.prototype.toJSONString) {
- Array.prototype.toJSONString = function () {
- var a = ['['], // The array holding the text fragments.
- b, // A boolean indicating that a comma is required.
- i, // Loop counter.
- l = this.length,
- v; // The value to be stringified.
- function p(s) {
- // p accumulates text fragments in an array. It inserts a comma before all
- // except the first fragment.
- if (b) {
- a.push(',');
- }
- a.push(s);
- b = true;
- }
- // For each value in this array...
- for (i = 0; i < l; i ++) {
- v = this[i];
- switch (typeof v) {
- // Values without a JSON representation are ignored.
- case 'undefined':
- case 'function':
- case 'unknown':
- break;
- // Serialize a JavaScript object value. Ignore objects thats lack the
- // toJSONString method. Due to a specification error in ECMAScript,
- // typeof null is 'object', so watch out for that case.
- case 'object':
- if (v) {
- if (typeof v.toJSONString === 'function') {
- p(v.toJSONString());
- }
- } else {
- p("null");
- }
- break;
- // Otherwise, serialize the value.
- default:
- p(v.toJSONString());
- }
- }
- // Join all of the fragments together and return.
- a.push(']');
- return a.join('');
- };
- Boolean.prototype.toJSONString = function () {
- return String(this);
- };
- Date.prototype.toJSONString = function () {
- // Ultimately, this method will be equivalent to the date.toISOString method.
- function f(n) {
- // Format integers to have at least two digits.
- return n < 10 ? '0' + n : n;
- }
- return '"' + this.getFullYear() + '-' +
- f(this.getMonth() + 1) + '-' +
- f(this.getDate()) + 'T' +
- f(this.getHours()) + ':' +
- f(this.getMinutes()) + ':' +
- f(this.getSeconds()) + '"';
- };
- Number.prototype.toJSONString = function () {
- // JSON numbers must be finite. Encode non-finite numbers as null.
- return isFinite(this) ? String(this) : "null";
- };
- Object.prototype.toJSONString = function () {
- var a = ['{'], // The array holding the text fragments.
- b, // A boolean indicating that a comma is required.
- k, // The current key.
- v; // The current value.
- function p(s) {
- // p accumulates text fragment pairs in an array. It inserts a comma before all
- // except the first fragment pair.
- if (b) {
- a.push(',');
- }
- a.push(k.toJSONString(), ':', s);
- b = true;
- }
- // Iterate through all of the keys in the object, ignoring the proto chain.
- for (k in this) {
- if (this.hasOwnProperty(k)) {
- v = this[k];
- switch (typeof v) {
- // Values without a JSON representation are ignored.
- case 'undefined':
- case 'function':
- case 'unknown':
- break;
- // Serialize a JavaScript object value. Ignore objects that lack the
- // toJSONString method. Due to a specification error in ECMAScript,
- // typeof null is 'object', so watch out for that case.
- case 'object':
- if (this !== window)
- {
- if (v) {
- if (typeof v.toJSONString === 'function') {
- p(v.toJSONString());
- }
- } else {
- p("null");
- }
- }
- break;
- default:
- p(v.toJSONString());
- }
- }
- }
- // Join all of the fragments together and return.
- a.push('}');
- return a.join('');
- };
- (function (s) {
- // Augment String.prototype. We do this in an immediate anonymous function to
- // avoid defining global variables.
- // m is a table of character substitutions.
- var m = {
- '\b': '\\b',
- '\t': '\\t',
- '\n': '\\n',
- '\f': '\\f',
- '\r': '\\r',
- '"' : '\\"',
- '\\': '\\\\'
- };
- s.parseJSON = function (filter) {
- // Parsing happens in three stages. In the first stage, we run the text against
- // a regular expression which looks for non-JSON characters. We are especially
- // concerned with '()' and 'new' because they can cause invocation, and '='
- // because it can cause mutation. But just to be safe, we will reject all
- // unexpected characters.
- try {
- if (/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/.
- test(this)) {
- // In the second stage we use the eval function to compile the text into a
- // JavaScript structure. The '{' operator is subject to a syntactic ambiguity
- // in JavaScript: it can begin a block or an object literal. We wrap the text
- // in parens to eliminate the ambiguity.
- var j = eval('(' + this + ')');
- // In the optional third stage, we recursively walk the new structure, passing
- // each name/value pair to a filter function for possible transformation.
- if (typeof filter === 'function') {
- function walk(k, v) {
- if (v && typeof v === 'object') {
- for (var i in v) {
- if (v.hasOwnProperty(i)) {
- v[i] = walk(i, v[i]);
- }
- }
- }
- return filter(k, v);
- }
- j = walk('', j);
- }
- return j;
- }
- } catch (e) {
- // Fall through if the regexp test fails.
- }
- throw new SyntaxError("parseJSON");
- };
- s.toJSONString = function () {
- // If the string contains no control characters, no quote characters, and no
- // backslash characters, then we can simply slap some quotes around it.
- // Otherwise we must also replace the offending characters with safe
- // sequences.
- // add by weberliu @ 2007-4-2
- var _self = this.replace("&", "%26");
- if (/["\\\x00-\x1f]/.test(this)) {
- return '"' + _self.replace(/([\x00-\x1f\\"])/g, function(a, b) {
- var c = m[b];
- if (c) {
- return c;
- }
- c = b.charCodeAt();
- return '\\u00' +
- Math.floor(c / 16).toString(16) +
- (c % 16).toString(16);
- }) + '"';
- }
- return '"' + _self + '"';
- };
- })(String.prototype);
- }
- Ajax.onRunning = showLoader;
- Ajax.onComplete = hideLoader;
- /* *
- * 显示载入信息
- */
- function showLoader()
- {
- document.getElementsByTagName('body').item(0).style.cursor = "wait";
- if (top.frames['header-frame'])
- {
- top.frames['header-frame'].document.getElementById("load-div").style.display = "block";
- }
- else
- {
- var obj = document.getElementById('loader');
- if ( ! obj && process_request)
- {
- obj = document.createElement("DIV");
- obj.id = "loader";
- obj.innerHTML = process_request;
- document.body.appendChild(obj);
- }
- }
- }
- /* *
- * 隐藏载入信息
- */
- function hideLoader()
- {
- document.getElementsByTagName('body').item(0).style.cursor = "auto";
- if (top.frames['header-frame'])
- {
- setTimeout(function(){top.frames['header-frame'].document.getElementById("load-div").style.display = "none"}, 10);
- }
- else
- {
- try
- {
- var obj = document.getElementById("loader");
- obj.style.display = 'none';
- document.body.removeChild(obj);
- }
- catch (ex)
- {}
- }
- }
复制代码 |
|