เพิ่มสไตล์อินไลน์โดยใช้ Javascript


94

ฉันพยายามเพิ่มรหัสนี้ในองค์ประกอบ div ที่สร้างขึ้นแบบไดนามิก

style = "width:330px;float:left;" 

รหัสที่สร้างไดนามิกdivคือ

var nFilter = document.createElement('div');
nFilter.className = 'well';
nFilter.innerHTML = '<label>' + sSearchStr + '</label>';

ความคิดของฉันคือการเพิ่มสไตล์หลังจากนั้น< div class="well"แต่ฉันไม่รู้ว่าจะทำอย่างไร


1
สิ่งที่แตกต่างมันจะทำให้? สไตล์อินไลน์จะมีความจำเพาะสูงสุดเสมอ
Amberlamps

เนื่องจาก div ถูกสร้างขึ้นแบบไดนามิกฉันไม่สามารถใช้สแตติกได้เนื่องจากเป็นสคริปต์ไลบรารี Javascript ที่สมบูรณ์
Curtis Crewe

บางทีนี่อาจเป็นปัญหา XY คุณพยายามทำอะไรให้สำเร็จ? คือnFilter.style.width = '330px'; nFilter.style.float = 'left';สิ่งที่คุณกำลังมองหา?
Amberlamps

คำตอบ:



38

คุณสามารถทำได้โดยตรงกับสไตล์:

var nFilter = document.createElement('div');
nFilter.className = 'well';
nFilter.innerHTML = '<label>'+sSearchStr+'</label>';

// Css styling
nFilter.style.width = "330px";
nFilter.style.float = "left";

// or
nFilter.setAttribute("style", "width:330px;float:left;");

6
ไม่ใช่สไตล์ CSS แต่เป็นตัวเลือกที่สามที่มี setAttribute เหมาะสำหรับฉัน
milkersarac

16

ใช้ jQuery:

$(nFilter).attr("style","whatever");

มิฉะนั้น :

nFilter.setAttribute("style", "whatever");

ควรทำงาน


6
ไม่จำเป็นต้องใช้ JQuery ในกรณีนี้
Dharman

10
เขาให้ทางเลือกอื่นโดยไม่ต้องใช้ JQuery ไม่เห็นความจำเป็นในการโหวตลด
Termato

วิธีการแก้ปัญหา vanilla JS ที่ถูกต้องตามคำขอเป็นวิธีอื่นหรือไม่? ไม่ใช่คนที่ไม่มีใครถามว่าเกี่ยวข้องกับห้องสมุดที่ไม่มีใครพูดถึงเหรอ?
Silvio Langereis



7

มีไม่กี่คนที่มีตัวอย่างการใช้ setAttribute ที่ฉันชอบ อย่างไรก็ตามถือว่าคุณไม่ได้กำหนดรูปแบบไว้ในขณะนี้ ฉันอาจจะทำบางอย่างเช่น:

nFilter.setAttribute('style', nFilter.getAttribute('style') + ';width:330px;float:left;');

หรือทำให้เป็นฟังก์ชันตัวช่วยเช่นนี้:

function setStyle(el, css){
  el.setAttribute('style', el.getAttribute('style') + ';' + css);
}

setStyle(nFilter, 'width:330px;float:left;');

เพื่อให้แน่ใจว่าคุณสามารถเพิ่มสไตล์ได้อย่างต่อเนื่องและจะไม่ลบสไตล์ใด ๆ ที่ตั้งไว้ในปัจจุบันโดยการต่อท้ายสไตล์ปัจจุบันเสมอ นอกจากนี้ยังเพิ่มเซมิโคลอนพิเศษเพื่อที่ว่าหากมีสไตล์ที่ขาดหายไปหนึ่งก็จะต่อท้ายอีกอันเพื่อให้แน่ใจว่ามีการคั่นอย่างสมบูรณ์



3

หากคุณไม่ต้องการเพิ่มคุณสมบัติ css ทีละบรรทัดคุณสามารถทำสิ่งนี้:

document.body.insertAdjacentHTML('afterbegin','<div id="div"></div>');

/**
 * Add styles to DOM element
 * @element DOM element
 * @styles object with css styles
 */
function addStyles(element,styles){
  for(id in styles){
    element.style[id] = styles[id];
  }
}

// usage
var nFilter = document.getElementById('div');
var styles = {
  color: "red"
  ,width: "100px"
  ,height: "100px"
  ,display: "block"
  ,border: "1px solid blue"
}
addStyles(nFilter,styles);




-1

ทำด้วย css ตอนนี้คุณได้สร้างคลาสแล้ว . เวล {width: 330px; ลอย: ซ้าย; }

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.