2010-01-11 27 views
11
function SlideObject(Side) { 
    $("#div").animate({ 
     margin+Side: "-1000px", 
     opacity: "hide" 
    }, 1000); 
} 

Tôi muốn chuyển giá trị cho "Bên" vào tên của số nhận dạng thuộc tính (lề) cho hàm animate.Làm thế nào để chuyển biến thành các thuộc tính hàm jquery animate?

Tôi biết rằng "lề + cạnh" không hợp lệ, nó chỉ có ở dạng người giữ chỗ. Ví dụ: nếu tôi chỉ định tên thuộc tính theo cách thủ công, nó có thể là "marginLeft" để đặt tên cho một ví dụ. Tôi muốn cung cấp "Trái", "Phải", "Trên cùng" hoặc "Dưới cùng" làm thông số cho hàm SlideObject.

Tôi đang gặp sự cố khi thực hiện việc này và một ví dụ sẽ tuyệt vời.

Cảm ơn

Trả lời

22

Thứ nhất, không sử dụng eval() để làm điều này. Không cần thiết và mở trang web của bạn thành các lỗ hổng nếu bạn đang sử dụng bất kỳ cách nào bằng cách sử dụng đầu vào của người dùng như một phần của điều đó (trực tiếp hoặc gián tiếp). Đúng cách để làm điều này là:

<div id="div">This is a test</div> 

với CSS:

và Javascript:

function slideObject(side) { 
    var anim = {opacity: 0}; 
    anim["margin" + side] = "-1000px"; 
    $("#div").animate(anim, 1000); 
} 

$(function() { 
    slideObject("Left"); 
}); 

Bạn sẽ lưu ý rằng giá trị opacity được thay đổi thành 0. hide được không phải là giá trị hợp lệ cho opacity.

Về cơ bản bạn tạo đối tượng ẩn danh và sau đó gán thuộc tính động sử dụng [].

+1

Vì lý do nào đó, điều này không hoạt động ... – fuzzywuzzy

+0

Sự căng thẳng của tôi không gây tranh cãi, nhưng làm thế nào mà có thể là một lỗ hổng? Ý tôi là, nó chạy trong trình duyệt ** MY **. – metrobalderas

+1

Cross-site scripting (XSS), có nghĩa là ai đó có thể tiêm JS để nó chạy trên trang web của bạn và sau đó có quyền truy cập vào nội dung nó nếu không thì không. – cletus

Các vấn đề liên quan