2008-10-02 7 views
7

का उपयोग कर एक लिंक डालें मैं एक HTML दस्तावेज़ को हाथ से बनाए रख रहा हूं, और मैं तालिका में पाठ के चारों ओर एक लिंक को स्वचालित रूप से सम्मिलित करने का एक तरीका ढूंढ रहा हूं। मुझे उदाहरण देकर स्पष्ट करते हैं:सीएसएस

<table><tr><td class="case">123456</td></tr></table> 

मैं स्वचालित रूप से वर्ग "मामले" हमारे बग ट्रैकिंग प्रणाली (जो संयोगवश, FogBugz है) में उस मामले के लिंक के साथ एक टीडी में हर पाठ करना चाहते हैं।

इसलिए मैं चाहता हूँ कि "123456" इस फार्म के लिए एक कड़ी के लिए परिवर्तित किया जा सकता:

<a href="http://bugs.example.com/fogbugz/default.php?123456">123456</a> 

कि संभव है? मैंने पहले और बाद में छद्म तत्वों के साथ खेला है, लेकिन मामला संख्या दोहराने का एक तरीका प्रतीत नहीं होता है।

+0

स्वचालित रूप से आपका क्या मतलब है? आपको अपने एचटीएमएल पर कुछ एप्लिकेशन चलाने की आवश्यकता होगी जो इसे वांछित परिणामों में परिवर्तित कर देगा। – azamsharp

उत्तर

11

ऐसा नहीं है कि ब्राउज़र में काम करेगा। आप सकता है, तथापि, कि कुछ अपेक्षाकृत मामूली जावास्क्रिप्ट के साथ ..

function makeCasesClickable(){ 
    var cells = document.getElementsByTagName('td') 
    for (var i = 0, cell; cell = cells[i]; i++){ 
     if (cell.className != 'case') continue 
     var caseId = cell.innerHTML 
     cell.innerHTML = '' 
     var link = document.createElement('a') 
     link.href = 'http://bugs.example.com/fogbugz/default.php?' + caseId 
     link.appendChild(document.createTextNode(caseId)) 
     cell.appendChild(link) 
    } 
} 

आप इसे कुछ के साथ onload = makeCasesClickable तरह लागू कर सकते हैं करते हैं, या बस सही पृष्ठ के अंत में यह शामिल है।

+0

लिंक में उन टीडी सामग्री को अंधाधुंध लपेटने के बारे में सावधान; ब्लॉक-स्तर तत्व दिखाई दे सकते हैं, और वे एक टैग के अंदर मान्य नहीं हैं। साथ ही, मुझे सही टेबल मिल जाएगा और इसके बच्चे के तत्व मिलेंगे और न केवल दस्तावेज़ में सभी टीडी को स्कूप करें। –

5

सीएसएस के साथ संभव नहीं है, साथ ही सीएसएस किसी भी तरह से नहीं है। क्लाइंट-साइड जावास्क्रिप्ट या सर्वर-साइड (पसंद की भाषा डालें) जाने का तरीका है।

1

मुझे नहीं लगता कि यह सीएसएस के साथ संभव है। सीएसएस केवल आपकी सामग्री के दिखने और लेआउट को प्रभावित करना चाहिए।

यह एक PHP स्क्रिप्ट (या कुछ अन्य भाषा) के लिए नौकरी की तरह लगता है। आपने पर्याप्त जानकारी नहीं दी थी मुझे सबसे अच्छा तरीका यह करने के लिए कुछ इस तरह पता है के लिए करने के लिए, लेकिन शायद:

function case_link($id) { 
    return '<a href="http://bugs.example.com/fogbuz/default.php?' . $id . '">' . $id . '</a>'; 
} 

बाद में अपने दस्तावेज़ में तब:

<table><tr><td class="case"><?php echo case_link('123456'); ?></td></tr></table> 

और अगर आप एक चाहते हैं। एचटीएमएल फ़ाइल, बस कमांड लाइन से स्क्रिप्ट चलाएं और आउटपुट को .html फ़ाइल पर रीडायरेक्ट करें। ,

$('.case').each(function() { 
    var link = $(this).html(); 
    $(this).contents().wrap('<a href="example.com/script.php?id='+link+'"></a>'); 
}); 
संक्षेप में

प्रत्येक .case तत्व पर, तत्व की सामग्री हड़पने जाएगा, और उन्हें एक लिंक यह चारों ओर लिपटा में फेंक:

7

यहां पोस्ट एक jQuery समाधान अपने HTML के लिए विशिष्ट है।

0

आपके पास ऐसा कुछ हो सकता है (जावास्क्रिप्ट का उपयोग करके)। <head> अंदर, <body>

<script type="text/javascript" language="javascript"> 
    makeLinks("case", "http://bugs.example.com/fogbugz/default.php?"); 
</script> 

मैं इसे परीक्षण किया है के अंत में

<script type="text/javascript" language="javascript"> 
    function getElementsByClass (className) { 
    var all = document.all ? document.all : 
     document.getElementsByTagName('*'); 
    var elements = new Array(); 
    for (var i = 0; i < all.length; i++) 
     if (all[i].className == className) 
     elements[elements.length] = all[i]; 
    return elements; 
    } 

    function makeLinks(className, url) { 
    nodes = getElementsByClass(className); 
    for(var i = 0; i < nodes.length; i++) { 
     node = nodes[i]; 
     text = node.innerHTML 
     node.innerHTML = '<a href="' + url + text + '">' + text + '</a>'; 
    } 
    } 
</script> 

और फिर, और यह ठीक काम करता है।

-3

मैं जानता हूँ कि यह एक पुराने सवाल है, लेकिन मैं इस पोस्ट सीएसएस का उपयोग कर हाइपरलिंक बनाने के लिए एक समाधान की तलाश पर ठोकर खाई और अपने खुद के बनाने, किसी को इस सवाल पर पहुंचने की तरह मैंने किया था के लिए ब्याज की हो सकता है समाप्त हो गया:

कि एक नकली सीएसएस विशेषता

सक्षम बनाता है कनेक्ट;

यहाँ एक php समारोह कहा जाता है 'लिंकर()': 'url.com';

#id परिभाषित आइटम के लिए। बस PHP को इसे HTML के प्रत्येक आइटम पर कॉल करने दें जिसे आप योग्य मानते हैं। आदानों, एक स्ट्रिंग रूप .css फ़ाइल उपयोग कर रहे हैं:

$ style_cont = file_get_contents ($ style_path);

और संबंधित आइटम का #id। यहाँ पूरी बात:

function linker($style_cont, $id_html){ 

    if (strpos($style_cont,'connect:') !== false) { 

     $url; 
     $id_final; 
     $id_outer = '#'.$id_html; 
     $id_loc = strpos($style_cont,$id_outer);  

     $connect_loc = strpos($style_cont,'connect:', $id_loc); 

     $next_single_quote = stripos($style_cont,"'", $connect_loc); 
     $next_double_quote = stripos($style_cont,'"', $connect_loc); 

     if($connect_loc < $next_single_quote) 
     { 
      $link_start = $next_single_quote +1; 
      $last_single_quote = stripos($style_cont, "'", $link_start); 
      $link_end = $last_single_quote; 
      $link_size = $link_end - $link_start; 
      $url = substr($style_cont, $link_start, $link_size); 
     } 
     else 
     { 
      $link_start = $next_double_quote +1; 
      $last_double_quote = stripos($style_cont, '"', $link_start); 
      $link_end = $last_double_quote; 
      $link_size = $link_end - $link_start; 
      $url = substr($style_cont, $link_start, $link_size); //link! 
     } 

     $connect_loc_rev = (strlen($style_cont) - $connect_loc) * -1; 
     $id_start = strrpos($style_cont, '#', $connect_loc_rev); 
     $id_end = strpos($style_cont,'{', $id_start); 
     $id_size = $id_end - $id_start; 
     $id_raw = substr($style_cont, $id_start, $id_size); 
     $id_clean = rtrim($id_raw);        //id! 

     if (strpos($url,'http://') !== false) 
     { 
      $url_clean = $url; 
     } 
     else 
     { 
      $url_clean = 'http://'.$url; 
     }; 

     if($id_clean[0] == '#') 
     { 
      $id_final = $id_clean; 

      if($id_outer == $id_final) 
      { 
       echo '<a href="'; 
       echo $url_clean; 
       echo '" target="_blank">'; 
      }; 
     }; 
    }; 
}; 

यह शायद सुधार किया जा सकता/.wrap() या getElementByID() तरह आदेशों का उपयोग करते छोटा है क्योंकि यह केवल <a href='blah'> भाग उत्पन्न करता है लेकिन </a> के रूप में देख रहा है एक उद्घाटन खंड के बिना वैसे भी गायब हो जाता है यह अभी भी काम करता है अगर आप उन्हें हर जगह जोड़ते हैं: डी

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^