2

在 JavaScript 中,是否可以编写如下所示的多行语句;

document.getElementById("ID").innerHTML = "Something"; 
                            .style.display = "some";
                            .style.color = "#CCC";

希望你有这个想法?

4

4 回答 4

2

不,你不能这样写,但可以使用:

var obj = document.getElementById("ID");
obj.innerHTML = "Something"; 
obj.style.display = "some";
obj.style.color = "#CCC";

因为要在 javascript 中调用任何属性,都需要您要在其上应用该属性的对象。

于 2013-09-23T11:12:57.057 回答
1

带入document.getElementById("ID")一个变量。

var eleId = document.getElementById("ID");

eleId.innerHTML = "Something"; 
eleId.style.display = "some";
eleId.style.color = "#CCC";
于 2013-09-23T11:12:49.377 回答
0

好吧,这一切都取决于,在你提供的示例中,你不能这样做,你只能在调用一个也返回函数的函数时这样做,一个很好的例子是 jQuery,让我们看看。

$('#something') // <-- select a element - returns a whole object of functions 
               .hide() // hide function was returned
               .show() // show function was returned
               .css(...);

在您的示例中,您设置的字符串实际上已返回。

这就是创建链接函数的方式。

var test = function( name ) {
   this.name = name;
   return this;
};

test.prototype.viewName = function() {
   console.log(this.name);
};

test.prototype.showName = function() {
    alert(this.name);
    return this;
};
var john = new test('john');
john.showName().viewName();

所以在你的情况下,你将不得不存储对象

var element = document.getElementById("ID");
    element.innerHTML = "Something"; 
    element.style.display = "some";
    element.style.color = "#CCC";

所以这一切都取决于你最后一次行动的回报。

于 2013-09-23T11:17:24.557 回答
0

嗯,它是,但不是你的情况。

当您一次又一次地调用多个返回相同 obj 的函数时,例如在 jQuery 中,这是可能的:

$('#el').fadeIn().fadeOut();

它被称为Cascade(好吧,Douglas Crockford 这么称呼它,你可以在他的书中找到它Javascript: The Good Parts

在您的情况下,您不能这样做(至少使用 vanilla javascript)。

var el = document.getElementById("ID")

el.innerHTML = "Something"; 
el.style.display = "some";
el.style.color = "#CCC";
于 2013-09-23T11:17:49.140 回答